我有一个实体叫 BankInfo
,其参数之一是 name
这是一个字符串。我只是想知道,是否有一种方法,在 CoreData
以检查并查看是否有 name
已有 BankInfo
而无需检索每一个 BankInfo
对象,并逐一循环检查?最有效的方法是什么?
你可以使用一个 获取请求 附带 谓词 来寻找与特定属性相匹配的对象。存在的对象,使用 countForFetchRequest
而不是实际获取对象,并将结果集限制为一个对象。
NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"BankInfo"];
[request setPredicate:[NSPredicate predicateWithFormat:@"name = %@", theName]];
[request setFetchLimit:1];
NSUInteger count = [context countForFetchRequest:request error:&error];
if (count == NSNotFound)
// some error occurred
else if (count == 0)
// no matching object
else
// at least one matching object exists
对于其他像我一样的人来说,他们在这里寻找的是: Swift 3 解决方案,在这里,它是。
let request = NSFetchRequest<NSFetchRequestResult>(entityName: "BankInfo")
let predicate = NSPredicate(format: "name == %@", theName)
request.predicate = predicate
request.fetchLimit = 1
do{
let count = try managedContext.count(for: request)
if(count == 0){
// no matching object
}
else{
// at least one matching object exists
}
}
catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}