gpt4 book ai didi

swift - 如何通过它的 objectID 获取核心数据实体?

转载 作者:IT王子 更新时间:2023-10-29 05:40:50 24 4
gpt4 key购买 nike

我有一个来自 coredata 的对象列表,然后我从其中一个对象中获取 objectId:

let fetchedId = poi.objectID.URIRepresentation()

现在我需要为这个特定的 objectID 获取实体。我尝试了类似的方法:

let entityDescription = NSEntityDescription.entityForName("Person", inManagedObjectContext: managedObjectContext!);

let request = NSFetchRequest();
request.entity = entityDescription;

let predicate = NSPredicate(format: "objectID = %i", fetchedId);

request.predicate = predicate;

var error: NSError?;

var objects = managedObjectContext?.executeFetchRequest(request,
error: &error)

但是我得到错误:

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath objectID not found in entity <NSSQLEntity Person id=4>'

最佳答案

您不能使用 NSFetchRequest 的谓词查询 NSManagedObject 的任意属性。这仅适用于在您的实体中定义的属性。

NSManagedObjectContext 有两种方法来检索具有 NSManagedObjectID 的对象。如果上下文中不存在对象,第一个会引发异常:

managedObjectContext.objectWithID(objectID) 

第二个将返回 nil 失败:

var error: NSError?
if let object = managedObjectContext.existingObjectWithID(objectID, error: &error) {
// do something with it
}
else {
println("Can't find object \(error)")
}

如果你有一个 URI 而不是 NSManagedObjectID,你必须先把它变成一个 NSManagedObjectID。 persistentStoreCoordinator 用于此:

let objectID = managedObjectContext.persistentStoreCoordinator!.managedObjectIDForURIRepresentation(uri)

关于swift - 如何通过它的 objectID 获取核心数据实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29075910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com