1

是否有NSPredicate返回任何单个现有的方法(或其他函数)NSManagedObject。也可以是实体类型的计数。除了自我存在之外,没有其他要求。

NSPredicate *fetch = [NSPredicate predicateWithFormat: "@ANY"]

....
[fetch setEntity:entityDescription];
[fetch setPredicate: predicate];
[fetch setFetchLimit:1];

请注意,这是“根”对象,因此在此引导阶段没有实例。

4

2 回答 2

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];
}
于 2013-06-25T07:17:05.130 回答
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)")
    }
于 2019-01-11T02:06:40.093 回答