У меня есть следующая базовая модель данных:
, где отношение «человек-код» - это отношение «один ко многим».
У меня есть функция, которая возвращает запись Person, и если код person.codes
возвращает NSSet всех кодов, связанных с этим Person.Вопрос, который у меня возник, заключается в том, как использовать 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
, ябудет иметь доступ к элементам code
и number
, но я получаю сообщение об ошибке: 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]