【发布时间】:2011-06-07 19:03:26
【问题描述】:
如何在 Xcode 4 的核心数据中向获取请求中添加变量?没找到。
【问题讨论】:
-
在你问了几个月后有人问了同样的问题:stackoverflow.com/questions/7099595/…
如何在 Xcode 4 的核心数据中向获取请求中添加变量?没找到。
【问题讨论】:
从下拉列表中选择Expression,并在替换变量前使用$ 输入表达式(在下面的示例中为NAME)。即使替换变量的值是字符串,请确保不要将变量放在引号之间,否则替换将不起作用。
在您的代码中,您指的是这样的 fetch 谓词(XCode 4.4 及更高版本):
NSManagedObjectModel* model = [[context persistentStoreCoordinator] managedObjectModel];
NSFetchRequest* request = [model fetchRequestFromTemplateWithName:templateName
substitutionVariables:@{@"NAME" : name}];
NSError* error = nil;
NSArray* results = [context executeFetchRequest:request error:&error];
【讨论】:
$ 放在 substitutionVariables 字典中的名称之前。
Apple 在最新的 XCode 中再次移动了它。要在 Core Data 编辑器的 Fetch Requests 中使用变量,您必须使用“表达式”类型并手动输入:
数据 == $DATA
(在这个表达式中,$DATA 是变量)。
【讨论】:
如果通过变量你的意思是传递一个值到一个获取请求,所以你分隔请求?然后你要做的就是声明一个 NSPredicate。
类似这样的:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"name" inManagedObjectContext:context];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(attribute == %@)", value];
[request setEntity:entity];
[request setPredicate:predicate];
NSError *error;
NSArray *results = [context executeFetchRequest:request error:&error];
[request release];
【讨论】:
您可能已经找到了解决方案,但我花了一些时间,它可能会节省其他人的时间,所以这里是:the apple documentation 解释它。
【讨论】: