我在核心数据中遇到了一个奇怪的问题。基本上,我有一个空的核心数据,有几个模型,比如学生和老师。我试图执行以下代码:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Student"];
request.predicate = [NSPredicate predicateWithFormat:@"(username = %@) AND (password = %@)", username, password];
// Determines if there is a match for student
NSError *error;
NSArray *matches = [self.context executeFetchRequest:request error:&error];
if (error || !matches || [matches count] > 1) {
NSLog(@"Error in retrieving login match for student");
}
else if ([matches count]) {
student = [matches firstObject];
}奇怪的是,matches最终是nil,错误消息被打印出来。匹配不应该是空数组,因为空核心数据只意味着上下文找不到满足这些条件的NSManagedObject?
发布于 2014-08-07 14:23:29
简短的回答=是的,应该是的。
根据苹果文档
executeFetchRequest的返回值。满足请求所指定的条件的对象数组,从接收器和与接收器的持久存储协调器相关联的持久存储中获取。如果发生错误,则返回零。如果没有任何对象与请求指定的条件匹配,则返回空数组。
因此,请检查您的NSError
https://stackoverflow.com/questions/25174139
复制相似问题