pdo*_*oak 3 core-data nsset swift
其中人员到代码是一对多的关系。
我有一个函数,它返回一个 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>";
})
Run Code Online (Sandbox Code Playgroud)
我想如果我使用person.codes.allObjects.firsttype Codes,我将能够访问codeandnumber元素,但我收到一个错误: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
}
}
Run Code Online (Sandbox Code Playgroud)
我可以使用以下方法获取一个人:
let row = personTableView.selectedRow
let person = CoreDataHandler.fetchPerson()?[row]
Run Code Online (Sandbox Code Playgroud)
Core Data 支持广泛的原生 Swift 类型。
声明codes如Set<Codes>在Person类。
它比typeless 方便得多NSSet。
你得到一个强类型,你可以申请像所有的原生功能filter,sort等等。没有类型转换。
| 归档时间: |
|
| 查看次数: |
4431 次 |
| 最近记录: |