【发布时间】:2013-10-24 04:48:17
【问题描述】:
我正在尝试从我的核心数据库中获取单个对象,但是它一直返回 null。我的方法基于另一种方法,该方法从我正在访问的 coredata 对象返回每个值..
我以前从未尝试过,并且尝试过阅读苹果文档,但它只是没有意义..这就是我的方法的样子
- (NSMutableArray *)readSelectedInstall:(NSString *)projIDString {
NSManagedObjectContext *context = [self managedObjectContext];
if (context == nil) {
NSLog(@"Nil");
}
else {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"InstallProject" inManagedObjectContext:context];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ProjID==%@", projIDString];
[fetchRequest setPredicate:predicate];
NSError *error;
NSMutableArray *installProjectDictionaryArray = [[NSMutableArray alloc] init];
NSArray *fetchedObjects = [context executeFetchRequest:fetchRequest error:&error];
for (InstallProject *installProj in fetchedObjects) {
NSMutableDictionary *tempInstallProjectDictionaryArray = [[ NSMutableDictionary alloc] init];
[tempInstallProjectDictionaryArray setObject:installProj.companyName forKey:@"CompanyName"];
[tempInstallProjectDictionaryArray setObject:installProj.projNo forKey:@"ProjNo"];
[tempInstallProjectDictionaryArray setObject:installProj.projID forKey:@"ProjID"];
[installProjectDictionaryArray addObject:tempInstallProjectDictionaryArray];
}
return installProjectDictionaryArray;
}
return nil;
}
任何帮助我返回 projID 与 projIDString 匹配的单个项目将不胜感激。
【问题讨论】:
-
是
context == nil?还是executeFetchRequest返回nil?在后一种情况下,error的值是多少? -
原来我没有分配我的 CoredataManagins 类。我现在已经这样做了,并且收到了一个错误。 “由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'未实现的谓词生成SQL:(ANY ProjID CONTAINS [cd]“10000085”)'”
-
"ANY ProjID CONTAINS[cd] ..." 不是您在问题中显示的谓词 ...
-
哎呀..我使用了下面答案中的错误。这就是我上面的代码生成的。 "*** 由于未捕获的异常 'NSInvalidArgumentException' 导致应用程序终止,原因:'keypath ProjID not found in entity
'" -
这意味着您没有为核心数据实体“InstallProject”定义属性“ProjID”。也许是一个小错字?
标签: ios objective-c core-data nspredicate