我想看看一个对象是否在核心数据中持久化.例如,我在Core Data有朋友,我用名字来识别他们.我可以查询核心数据,看看是否知道"乔治".如果结果集数组包含超过零个对象,我知道George在那里.但核心数据会将整个过程加载到内存中,我实际上只想知道George是否被存储.
我该如何以最有效的方式完成?
我想看看一个对象是否在核心数据中持久化.例如,我在Core Data有朋友,我用名字来识别他们.我可以查询核心数据,看看是否知道"乔治".如果结果集数组包含超过零个对象,我知道George在那里.但核心数据会将整个过程加载到内存中,我实际上只想知道George是否被存储.
我该如何以最有效的方式完成?
设置核心数据请求,并执行以下操作,而不是实际发出查询:
NSError *error = nil;
NSUInteger count = [managedObjectContext countForFetchRequest:request
error:&error];
if (!error) {
return count;
} else {
return 0;
}
在实践中,方法countForFetchRequest:error:
返回给定的获取请求如果被传递到executeFetchRequest:error:
就会返回的对象数.
Edit:(由Regexident提供)
正如Josh Caswell正确 comments 的那样,处理错误的正确方法是:
if (count == NSNotFound) {
NSLog(@"Error: %@", error);
return 0;
}
return count;
或者这个(没有错误记录):
return (count != NSNotFound) ? count : 0;