タグ

NSDictionaryとNSArrayに関するBowz13のブックマーク (7)

  • コレクションのコピー

    『はじめてのiPhoneプログラミング』の文中で、『NSMutableCopyingのコピーは浅いコピーなので~』の説明が足りない気がしたので調べてみました。 オブジェクトのコピーとしては『浅いコピーと深いコピー』として『詳解 Objective-C 2.0』に解説があるのですが、辞書の場合についてもう少し知りたくて検索した所『Collections Programming Topics』というリファレンスがありましたので、『Copying Collections』の項を訳してみます。 ●コレクションのコピー オブジェクトのコピーには浅いコピー(Shallow copy)と深いコピー(Deep copy)の二種類があります。 通常のコピーは浅いコピーで、新しく生成したコレクションの所有権は元のオブジェクトと共有しています。 深いコピーは元から新しいオブジェクトを生成し、新しいコレクション

  • iOSでUnderscore.jsライクに処理できるUnderscore.m〜前編〜 | Developers.IO

    Underscore.mとは? Underscore.mはNSArray(NSMutableArray)やNSDictionary(NSMutableDictionary)に対してのデータの加工処理を容易にするためのオープンソース(MITライセンス)のライブラリです。JSでUnderscore.jsを利用していた方には馴染み深いですね。これらのデータに対する処理を実装することはよくあることですので、覚えておいて損はないと思います。 Underscore.mにあるサンプルを用いて説明すると、例えば「言語をキーとして挨拶文を定義したNSDictionaryがあり、この挨拶文に含まれる単語の先頭を大文字に変換したものを配列として取得する。ただし挨拶文が必ず定義されている訳ではない」といった処理があるとします。この場合、通常であれば以下のように記述するかと思います。 NSDictionary *d

  • カグラダ/iPhoneアプリ開発 - コラム

    トップ プロフィール アプリ コラム セーブデータの作り方 動作確認 iPhone4S/新しいiPad 5.1.1 iosでセーブデータを作りたいと思った人へ。 自分は、BOOL型の配列を複数ファイルに保存、復元したいときに詰まりましたのでメモ。 このページでは BOOL型配列など⇔NSData NSData⇔NSDictionary NSDictionary⇔(NSData)⇔ファイル と3つにわけ方法を紹介します。 保存 //BOOL型配列など->NSData BOOL saveFlag[5] = {YES, NO, NO, YES, NO}; unsigned char status[5] = {32, 232, 123, 76, 46}; NSData *saveFlagData = [NSData dataWithBytes:saveFlag length:sizeof(save

  • suf.lab: データの保存 (4) - いろいろなデータのファイル保存

    Thursday, February 10, 2011 データの保存 (4) - いろいろなデータのファイル保存 Label: iOS, Objective-C iPhoneアプリ開発において、データを保存したい場合はどうすればいいのだろう? 今回は様々なデータ保存の手法を取り上げてみます。 バックナンバー 設定などの保存 ホームディレクトリとファイルパス ファイルやディレクトリの操作 いろいろなデータのファイル保存 プロパティリストの利用 ローレベルなファイルアクセス いろいろなデータのファイル保存 さて、それでは今回の題「データ保存」の方法を調べていきます。 一概にデータを保存するといっても、既存のクラスを利用して簡単に保存する方法もあれば、ファイルハンドルを取得してバイト列を読み書きするローレベルな方法もあります。 今回は前者の高レベルなアクセスを取り上げましょう。 この記事の内

  • Song of Cloud: NSArrayとNSDictionaryのオーナーシップ

    Objective-C 2.0ではガベージコレクションが導入されて、メモリ管理がだいぶシンプルになりましたが、iPhone開発ではその恩恵に預かれませんので、色々と気を使います。 NSArrayに要素を追加した時、NSArrayはその要素オブジェクトにretainメッセージを送ってオーナーシップを獲得します。NSArrayが解放された場合、格納されているオブジェクトすべてにreleaseメッセージが送られます。また、格納した要素をNSArrayから削除した場合、その要素にreleaseメッセージが送られます。 なので、こういう書き方をするのはちょいとよろしくありません。 NSArray *array = [[NSArray alloc] initWithObjects: [[Foo alloc] init], [[Bar alloc] init],nil]; // なんらかの処理 [arr

  • NSDictionaryやNSArrayが日本語を含んでいるとNSLogで読めないことへの対処 | スマートフォンアプリ開発会社のエンジニアブログ

    はじめに NSDictionaryやNSArrayに日語が含まれていると、”\U3044\U3044″みたいになってよめない。 文字化けしているというかエスケープされているというのか、なんというかもう読めない。 そこで! そこで、日語で表示させる方法を発見しました!NSDictionary *dict = @{@"AA":@"ああ", @"いい":@{@"うう":@"ええ"} }; NSArray *arr = @[@"あああ", @"いいい"]; NSString *dictString = [NSString stringWithFormat:@"%@",dict]; NSString *dictUTFNonLossyASCIIStringEncoding = [NSString stringWithCString:[dictString cStringUsingEncoding

  • NSDictionaryとNSArrayの高速列挙について - _J Blog

    的な事を知らなかったでメモ NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys: @"value1", @"key1", @"value2", @"key2", @"value3", @"key3", nil ]; // キーでループする場合 for (id i in [dictionary keyEnumerator]) { // なんか処理 } // 値でループする場合 for (id i in [dictionary objectEnumerator]) { // なんか処理 } NSDictionryの値も直接ループできるのを知らなかった・・・ キーを取り出してから値を取得してた・・・

    NSDictionaryとNSArrayの高速列挙について - _J Blog
  • 1