NSArray valueForKey返回NSNull?

时间:2014-01-06 13:10:54

标签: ios cocoa nsarray

给出以下代码(使用magicrecord进行coredata提取):

// Get all of our apps.
NSArray * applications = [Application MR_findAllInContext: [NSManagedObjectContext MR_context]];

Application * application = [applications firstObject];
NSLog(@"Test: %@", application.applicationId);

NSArray * applicationIds = [applications valueForKey: @"applicationId"];
NSLog(@"Application ids: %@", applicationIds);

我得到以下日志:

Test: 586001240
Application ids: (
    "<null>",
    "<null>"
)

我知道applications数组包含两个条目。每个都有一个独特的applicationId属性。我不明白为什么对valueForKey的调用会给我两个空值?相反,我应该得到两个NSNumber对象。

我最近发现了关于valueForKey(以前获取唯一条目我会使用枚举并将条目添加到数组中)。我试图使用valueForKey来提高可读性。显然我不是正确理解的东西。关于我哪里出错的提示?

编辑 - 更多详情:

Application类是通过核心数据模型生成的。界面定义为:

@interface Application : NSManagedObject

@property (nonatomic, retain) NSNumber * applicationId;
@property (nonatomic, retain) NSString * name;

@end

1 个答案:

答案 0 :(得分:0)

想出来 - 我的问题非常愚蠢。

我不得不改变:

[Application MR_findAllInContext: [NSManagedObjectContext MR_context]];

成为:

[Application MR_findAllInContext: [NSManagedObjectContext MR_defaultContext]];

解决了这个问题。