【发布时间】:2013-06-07 10:35:26
【问题描述】:
我正在从CoreData 获取一些东西,我期望1 result 或nil。
目前我将 fetch 设置为 NSArray 并尝试将其提取到 IconRoutine* 对象中,但 [context executeFetchRequest:fetchIcon error:&error]; 需要提取到数组中,因此在我尝试时导致崩溃。
我想我想知道我是否可以通过另一种方式获取entity object,这样我就不需要if ( [Icon count] !=0 ) 来检查nil,我可以返回获取的任何内容并处理nil entity 在另一种方法中。
或者也许只是一种更有效的方式(如果有的话)来处理您期望1 或nil 的结果。
- (IconRoutine *) getIconRoutine {
NSFetchRequest *fetchIcon = [[NSFetchRequest alloc] init];
NSEntityDescription *entityItem = [NSEntityDescription entityForName:@"IconRoutine" inManagedObjectContext:context];
[fetchIcon setEntity:entityItem];
[fetchIcon setRelationshipKeyPathsForPrefetching:[NSArray arrayWithObjects:@"User",@"Routine", nil]];
[fetchIcon setPredicate:[NSPredicate predicateWithFormat:@"(routine.routineName == %@) AND (user.email LIKE %@) AND (author LIKE %@)",_routineNameInput.text,_appDelegate.currentUser,_routineAuthor]];
NSError *error = nil;
NSArray* Icon = [context executeFetchRequest:fetchIcon error:&error];
if ( [Icon count] !=0 ) {
return Icon[0];
}
return NO;
}
【问题讨论】:
-
恐怕这就是 Core Data 的工作方式。你总是取到一个数组中。
-
请注意,返回值
nil表示“错误”,而空数组表示“无结果”。 -
您能解释一下您想要实现的目标吗?
getIconRoutine返回IconRoutine而不是布尔值。谢谢。 -
崩溃的原因是什么?添加一些细节...
-
@flexaddicted 他想返回 IconRoutine 对象,如果它存在,否则返回 nil(我相信他只是使用 NO 而不是 nil)。
标签: ios objective-c core-data nsfetchrequest