gpt4 book ai didi

swift - 如何使用从 Core Data 创建的 NSSet

转载 作者:行者123 更新时间:2023-12-04 01:20:11 25 4
gpt4 key购买 nike

我有以下核心数据模型:
enter image description here
enter image description here

其中人员到代码是一对多的关系。

我有一个返回 Person 记录的函数,如果代码 person.codes 返回与该 Person 关联的所有代码的 NSSet。我遇到的问题是如何使用 NSSet。
person.codes.allObjects.first 返回此数据:

<Codes: 0x60000213cb40> (entity: Codes; id: 0xb978dbf34ddb849 <x-coredata://A2B634E4-E136-48E1-B2C5-82B6B68FBE44/Codes/p1> ; data: {
code = 4LQ;
number = 1;
whosAccount = "0xb978dbf34ddb869 <x-coredata://A2B634E4-E136-48E1-B2C5-82B6B68FBE44/Person/p1>";
})

我想如果我制作了 person.codes.allObjects.first 类型的 Codes ,我将能够访问 codenumber 元素,但我收到一个错误: error: value of type 'Any?' has no member 'number'
另外,我如何在此数据集中搜索特定代码或数字。

我很欣赏这可能是一个简单的问题,但搜索并阅读了文档无济于事。我怀疑可能基础知识还不够。

更新

我有一个包含以下代码的 CoreDataHandler 类:
class CoreDataHandler: NSObject {
//static let sharedInstance = CoreDataHandler()

private static func getContext() -> NSManagedObjectContext {
let appDelegate = NSApplication.shared.delegate as! AppDelegate

return appDelegate.persistentContainer.viewContext
}

static func fetchPerson() -> [Person]? {
let context = getContext()

do {
let persons: [Person] = try context.fetch(Person.fetchRequest())
return persons
} catch {
return nil
}
}

我可以使用以下方法获取一个人:
let row = personTableView.selectedRow
let person = CoreDataHandler.fetchPerson()?[row]

最佳答案

Core Data 支持广泛的原生 Swift 类型。

codes 类中将 Set<Codes> 声明为 Person

它比无类型 NSSet 方便得多。
你得到一个强类型,你可以应用所有原生函数,如 filtersort 等,而无需类型转换。

关于swift - 如何使用从 Core Data 创建的 NSSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53437853/

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