是否有方法(NSPredicate
或其他函数)返回任何单个现有NSManagedObject
。也可以是实体类型的计数。除了仅存在于自我之外,没有其他要求。
NSPredicate *fetch = [NSPredicate predicateWithFormat: "@ANY"]
....
[fetch setEntity:entityDescription];
[fetch setPredicate: predicate];
[fetch setFetchLimit:1];
请注意,这是“根”对象,因此在此启动阶段没有实例。
答案 0 :(得分:2)
我不确定我是否正确理解你的问题,但是要获得一个(任意)对象 您的实体只是不添加谓词到获取请求并将获取限制设置为 之一:
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"YourEntity"];
[request setFetchLimit:1];
NSError *error;
NSArray *result = [context executeFetchRequest:request error:&error];
if (result == nil) {
// Error executing fetch request
} else if ([result count] == 0) {
// Found none
} else {
// Found one
NSManagedObject *obj = result[0];
}
答案 1 :(得分:1)
几年后,我遇到了这个问题,并认为在Swift中看到它可能会有所帮助。在我的测试中,这将返回数据存储区中的第一个条目,不一定是整个存储区中的随机条目,或者每次都返回一个不同的条目。
假设通过“ ANY”就可以简单地返回第一个条目,那么这就是在Swift中的操作方法。
对于Swift 4.2:
let fetchRequest : NSFetchRequest<yourEntityName> = yourEntityName.fetchRequest()
fetchRequest.fetchLimit = 1
do {
let fetchResults = try managedContext.fetch(fetchRequest)
if fetchResults.count == 0 {
// found none
} else {
// found one
var obj: NSManagedObject = fetchResults[0]
}
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}