具有存储在核心数据模型中的获取请求的变量替换

时间:2010-05-24 12:51:05

标签: cocoa core-data data-modeling nsfetchrequest nspredicateeditor

我总是在代码中创建我的NSFetchRequests。现在我正在查看Xcode GUI以构建获取请求并将其存储在模型中。

我正在关注Xcode文档中的一个示例。我向模型添加了一个获取请求,并且通过Modeling GUI创建的谓词是:

 firstName LIKE[c] "*SUBSTRING*"

然后我用这两行检索该请求:

NSDictionary *substituionDictionary = [NSDictionary dictionaryWithObject:@"woody" forKey:@"SUBSTRING"];

NSFetchRequest *fetchRequest = [mom fetchRequestFromTemplateWithName:@"firstNameContains" substitutionVariables:substituionDictionary];

生成的NSFetchRequest的NSLog输出:

(entity: Customer; predicate: (firstName LIKE[c] "*SUBSTRING*"); sortDescriptors: (null); limit: 0)

..表示在返回存储的FetchRequest之前,该变量未被替换。

那么,如何指定在Xcode数据建模获取请求谓词生成器GUI中输入的文本将在运行时由NSFetchRequest替换:fetchRequestFromTemplateWithName:substitutionVariables:?

谢谢!

木质

2 个答案:

答案 0 :(得分:6)

您需要右键单击包含预期变量的获取请求谓词编辑器的行,然后从弹出窗口中选择“VARIABLE”。在Xcode编辑器中右键单击的位置有时很挑剔,所以我倾向于单击+/-按钮的左侧。

答案 1 :(得分:0)

以下是替换变量的示例。

首先在“提取请求”部分中创建fetchRequest模板。

enter image description here

然后通过firstName编写用于提取员工的代码。

DirectChannel