gpt4 book ai didi

Swift:对核心数据实体数组的核心数据提取请求

转载 作者:行者123 更新时间:2023-11-28 05:44:49 25 4
gpt4 key购买 nike

我正在尝试从 CoreData 存储中获取一些值,并将其键入为生成的 CoreData 实体类的数组。这可能吗?

guard let appDelegate = UIApplication.shared.delegate as? AppDelegate else { return }
let managedContext = appDelegate.persistentContainer.viewContext
let responseFetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "Response")

do {
var responses = try managedContext.fetch(responseFetchRequest) as! [Response]
print(responses[0])
} catch {
print("Failed!")
}

此打印语句仅将以下内容打印到控制台:

Printed entity object

这样使用这些实体类是错误的吗?我以前用它们来创建数据(请参阅下面的用法),所以您当然也可以将它们用作模型吗?

let responseEntity = NSEntityDescription.entity(forEntityName: "Response", in: managedContext)!
let response = Response(
context: NSManagedObject(
entity: responseEntity,
insertInto: managedContext
).managedObjectContext!
)

此外,对于上下文,这就是我所说的 CoreData 实体的意思:

CoreData entity

最佳答案

所以我认为你的问题在于你创建对象的代码:

let responseEntity = NSEntityDescription.entity(forEntityName: "Response", in: managedContext)!
let response = Response(
context: NSManagedObject(
entity: responseEntity,
insertInto: managedContext
).managedObjectContext!
)

您正在将 NSManagedObject(entity: responseEntity, insertInto: managedContext).managedObjectContext! 传递到初始化程序的 context 参数中。该代码段所做的是创建一个空白对象,将其插入 managedContext,然后获取其 managedObjectContext 属性。这发生在 Response 对象初始化之前,因此每次调用都会创建两个对象。尝试更改为:

let response = Response(context: managedContext)

CoreData 将根据类推断出正确的实体。

关于Swift:对核心数据实体数组的核心数据提取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55205997/

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