【发布时间】:2014-01-06 13:10:53
【问题描述】:
给定以下代码(使用 magicrecord 获取核心数据):
// 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);
我得到以下日志:
测试:586001240 应用程序 ID:( "", “” )我知道applications 数组包含两个条目。每个都有一个独特的applicationId 属性。我不明白为什么对valueForKey 的调用会返回两个空值?相反,我应该得到两个 NSNumber 对象。
我最近发现了 valueForKey(以前为了获得唯一的条目,我会使用枚举并将条目添加到数组中)。我正在尝试使用 valueForKey 来提高可读性。显然我没有正确理解某些东西。关于我哪里出错的任何提示?
编辑 - 更多细节:
Application 类是通过核心数据模型生成的。接口定义为:
@interface Application : NSManagedObject
@property (nonatomic, retain) NSNumber * applicationId;
@property (nonatomic, retain) NSString * name;
@end
【问题讨论】:
-
我想你想使用
NSDictionary?我也觉得valueForKey:方法属于KVO,不能像你这样使用 -
Application的界面是什么样的?是否符合键值? -
您的代码看起来不错,所以我们需要查看 Application.applicationId 属性的实现和声明。如果它只是一个标准的核心数据属性,则可能存在故障问题。
-
谢谢大家。想通了并发布了答案。问题是我使用
MR_context作为我的上下文而不是MR_defaultContext。