Edited at

pluckみたくNSArrayに入ってるNSManagedObjectから特定のプロパティの配列を作りたい時

More than 5 years have passed since last update.

普段Androidな開発友達から質問が来たので。

HogeをNSManagedObjectの派生クラスとします。

@interface Hoge : NSManagedObject

NSNumber *hoge_id;
NSNumber *name;
NSNumber *status;
Poyo *poyo;
@end

このnameだけの配列が欲しい時どうするか?

ずばりvalueForKeyPath:を使います。

- (NSArray *)namesByStatus:( NSInteger status ){

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"status = %d", status ];
NSArray *records = [Hoge findAllByPredicate:predicate];

return [records valueForKeyPath:@"name"]; // こんだけ
}

さらにHogeに入ったPoyoのnameも欲しい時は?

[records valueForKeyPath:@"poyo.name"]; // こんだけ

「.」で繋げると深いところも取ってこれます。

underscore.js/.phpでいうところのpluckとかそういうのですね。

単純すぎてググりにくいネタなので。

なぜこれで取ってこれるか知りたい人はKVC(Key-Value Coding)辺りを調べるといいかも。