gpt4 book ai didi

ios - Swift:CoreData 错误以及如何设置实体和 DataModel?

转载 作者:行者123 更新时间:2023-11-30 11:40:23 29 4
gpt4 key购买 nike

到目前为止,我可以在 swift 文件中创建自己的数据模型。像这样的东西:

用户.swift:

class User {
var name: String
var age: Int

init?(name: String, age: Int) {
self.name = name
self.age = age
}
}

当我创建核心数据模型时,即。一个 UserData 实体,(1) 我是否必须添加与我自己的数据模型中相同数量的属性,因此在本例中是两个 - 姓名和年龄?或者(2)它可以只有一个属性,例如。姓名(而不是年龄)?

我的核心数据模型:

用户数据

  • 姓名
  • 年龄

我遇到的第二个问题是,当我启动获取请求时,我在 Xcode 中收到一个奇怪的错误。这就是我启动 fetchRequest 的方式(AppDelegate 按照文档中的建议进行设置):

var users = [User]()
var managedObjectContext: NSManagedObjectContext!
...

func loadUserData() {

let dataRequest: NSFetchRequest<UserData> = UserData.fetchRequest()

do {
users = try managedObjectContext.fetch(dataRequest)
....
} catch {
// do something here
}
}

我收到的错误是“无法将“[UserData]”类型的值分配给“[User]”类型

这个错误是什么意思?官方文档中描述了一些错误,但不是这个。

最佳答案

如果您正在核心数据中设计用户模型,则不必自己编写该类。事实上,默认情况下,一旦您在项目中创建 NSManagedObject 的子类,Xcode 就会自动生成它们,但如果您想添加其他功能,也可以手动生成它们:

enter image description here

然后您可以转到编辑器并手动生成类

enter image description here

这样做将为您提供 User+CoreDataClass.swiftUser+CoreDataProperties.swift。我在您的问题中看到您在询问核心数据模型与您的“自己的”模型相比如何,但如果您使用核心数据,那么这就是模型。生成的 User 类(它是 NSManagedObject 的子类)就是您所需要的。

然后你可以像这样获取用户:

let userFetch = NSFetchRequest(entityName: "User")
do {
users = try managedObjectContext.executeFetchRequest(userFetch) as! [User]
} catch {
fatalError("Failed to fetch users: \(error)")
}

关于ios - Swift:CoreData 错误以及如何设置实体和 DataModel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49352179/

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