Spo*_*ude 6 objective-c magicalrecord-2.2 xcode7
这是我的代码:
NSPredicate *filter = [NSPredicate predicateWithFormat:@"aMostRecentFlag == 1"]; // find old records
NSFetchRequest *fetchRequest = [PreferenceData MR_requestAllWithPredicate: filter];
[fetchRequest setResultType: NSDictionaryResultType];
NSDictionary *preferenceData = [PreferenceData MR_executeFetchRequest:fetchRequest];
Run Code Online (Sandbox Code Playgroud)
我从构建中收到警告:
Incompatible pointer types initializing 'NSDictionary *' with an expression of type 'NSArray *'
Run Code Online (Sandbox Code Playgroud)
这表明MR没有按照文件记录返回NSDictionary; 我的代码有问题吗?顺便说一下,获取请求不会返回任何内容,尽管应该有一条记录.
看来评论已经给出了答案,但不知道大家都清楚了。
获取请求返回结果数组。通常,表示结果的对象将是模型中指定的类。如果您要子类化NSManagedObject(正如您应该做的那样),它将是子类。如果不是,它将是一个看起来通用的 NSManagedObject,您可以通过 访问其属性valueForKey:。
但是,您可以要求将结果作为字典返回。这并不意味着该executeFetchRequest:error:方法返回字典。相反,这意味着数组中的每个对象都是一个字典。
无论您获得哪种格式的结果,都必须从数组中提取您关心的对象。常见的习惯用法是简单地将.lastObjector附加.firstObject到调用的末尾executeFetchRequest:error:。就像是:
MyObject *object = [context executeFetchRequest:request error:NULL].firstObject;
Run Code Online (Sandbox Code Playgroud)
Magical Record只不过是核心数据类的一个奇特的包装器。它提供了方便的方法,但 Core Data 的所有常用语义仍然有效。
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |