「ソフトウェア開発」カテゴリーアーカイブ

ソフトウェア開発の技法やオフショア開発について書いていきます。

Objective-Cで正しくURL encode/decodeする方法

以下のような方法でURLエンコード/デコードできると書かれているサイトが沢山あるが、大嘘つきもいい所だ。特殊文字を取りこぼしまくってる。

//encoding
NSString *escapedUrlString
     = [plainString stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

//decoding
NSString *decodedUrlString
     = [escapedUrlString stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];

多分これで全部フォローできていると思うが、もし足りない文字があればコメントで教えて欲しい。

//encoding
NSString *escapedUrlString = (NSString *)CFURLCreateStringByAddingPercentEscapes(
        NULL,
        (CFStringRef)plainString,
        NULL,
        (CFStringRef)@"!*'();:@&=+$,/?%#[]",
        kCFStringEncodingUTF8 );

//decoding
NSString *decodedUrlString = (NSString *) CFURLCreateStringByReplacingPercentEscapesUsingEncoding(
        NULL,
        (CFStringRef) escapedUrlString,
        CFSTR(""),
        kCFStringEncodingUTF8);

というかURL encode/decodeの標準関数が実はあるけど、俺が気づいていないだけなのか?

Xcode 4.0.1でInterface BuilderのInspectorを表示する方法

Interface BuilderはXcode付属のUIデザイン用のアプリだが、Xcode 4.0.1からXcodeに組み込まれた。今までは別アプリだったのだが、それが一緒になった。

ただ、今までもXcodeから直接起動できたので、特別便利になったという訳ではない。感覚的に起動が速くなった気がするが、計測してないので本当に気のせいかもしれない。

久しぶりに、UIデザインを変更しようと、Xcodeのサイドビューのリソース一覧から.xibファイルをダブルクリックしてみたのだが、UIの画面は表示されるが、コンポーネントが入った一覧が表示されないではないか!ドラッグアンドドロップでUIを描いていくのに、そのもととなるコンポーネントが入っている一覧ビューが無いのである。

色々いじって分かったのが、コンポーネント一覧を表示するには、[option]+[command]+[1]で、ファイルインスペクターを右に表示すると、その下半分が期待したビューであるということ。

UIが一気に変更されると最初の一回が困る。。。

Xcode 4.0.1でFrameworkを追加する方法

非常に使いにくい統合環境(私の中だけ?)で有名なXcodeであるが、フレームワークと呼ばれるライブラリの追加方法が変更されている。一人でう〜ん、う〜ん唸って、ようやく発見しました。

手順は以下の通り。

まず、左のビューから[プロジェクト名]を選択。TARGETSから追加したいターゲットを選択し、[Build Phases]-[Link Binary With Libraries]と選択すると、5の位置に[+]マークがあるのでここからフレームワークを追加できます。

今回のバージョンアップで少しは使いやすくなったかな?しかし、バージョンアップ毎に巨大なファイルを全部ダウンロードするのは結構辛い。正確には、会社の回線はかなり速いハズなのにApple側のダウンロードサーバーが遅いので、全然落ちてこないというね。差分提供はテストが大変になるというのは理解できるので、せめて回線の増強ぐらいして欲しいと思う。