在 Xcode 3.X 中,您应该右键单击获取请求模板的谓词编辑器中的空白来指定变量输入而不是硬编码谓词。
这是 XCode 4 中的哪里?我已经按住了选项,右键单击,选项单击等,但无法弄清楚......
我认为X4不再有变量了。
相反,我认为您必须选择一个表达式,然后提供以下形式的变量$VARNAME
.
例如,给定和实体Alpha
有一个属性aString
,我创建了一个获取请求模板bobFetch
表达式为aString == $TESTVAR
.
Alpha *a=[NSEntityDescription insertNewObjectForEntityForName:@"Alpha" inManagedObjectContext:self.moc];
a.aString=@"steve";
[self saveContext];
NSDictionary *subVars=[NSDictionary dictionaryWithObject:@"steve" forKey:@"TESTVAR"];
NSFetchRequest *fetchRequest = [self.managedObjectModel fetchRequestFromTemplateWithName:@"bobRequest" substitutionVariables:subVars];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Alpha" inManagedObjectContext:self.moc];
[fetchRequest setEntity:entity];
如果登录fetchRequest
报告:
<NSFetchRequest: 0x4d17480> (entity: Alpha; predicate: (aString == "steve"); sortDescriptors: ((null)); type: NSManagedObjectResultType; )
……然后就可以正常使用了。
NSError *error = nil;
NSArray *fetchedObjects = [self.moc executeFetchRequest:fetchRequest error:&error];
if (fetchedObjects == nil) {
NSLog(@"fetch error = %@",error);
}
NSLog(@"fetchObjects = %@",fetchedObjects);
对于图形环境来说有点笨拙,但它确实有效。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)