普段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)辺りを調べるといいかも。