MagicalRecord : Core Data の Attribute が NSArray の場合の書き方

Written by じび on 7月 5th, 2014

AFNetworkingで読み込んだWeb APIデータなどを取り込む処理で、要素が配列だった場合にどうすればいいか調べました。

Core Data ModelでAttributeを設定する時に、Typeを”Transformable”に設定する。この時、Nameは空欄にする。NSArray、NSDictionary、NSString、NSDate、NSNumber、NSDataなどNSCoding Protocolを実装しているものに変換する場合はこのように空欄でOKらしい。

スクリーンショット 2014-07-05 20.51.31

試しに要素をNSArrayにして読み込ませてみます。

    Item *item = [Item MR_createEntity];
    
    NSDictionary *dict = @{@"names": @[
                                   @"aaa",
                                   @"bbb",
                                   @"ccc",
                                   ],
                           };
    
    [item MR_importValuesForKeysWithObject:dict];
    
    NSLog(@"item=%@", item);

ちゃんとNSArryとして取り込まれているようです。

(lldb) po item
<Item: 0x8f23d80> (entity: Item; id: 0x8f23db0 <x-coredata:///Item/tBCCB18AF-3F30-45E8-A59C-B3E77196FB9A2> ; data: {
    names = "(\n    aaa,\n    bbb,\n    ccc\n)";
})

(lldb) po item.names
<__NSArrayI 0x8f20a90>(
aaa,
bbb,
ccc
)


(lldb) po item.names[0]
aaa

(lldb) po item.names[1]
bbb

(lldb) po item.names[2]
ccc

(lldb) 
 

Leave a Comment