我们有两个一对一关系的表。 personel.idpersonel
映射到personeltochart.idpersonel
。
在登录事件中,我们从Web服务同步personel
表的数据,并将其保存到personel
表中。我们必须获取另一个事件的其他表数据并保存它。
问题是当我们尝试从这两个表中获取数据时,为什么我们正确获取personel
表的数据,但来自personeltochart
表的数据是否为nil?
名字
idpersonel
id
idpersonel
以下是保存表格数据的示例:
let jsonEmza = try jsonDecoder.decode([JSONNameTabel].self, from: data)
var privateContext = NSManagedObjectContext(concurrencyType: .privateQueueConcurrencyType)
privateContext = CoreDataManager.shared.persistentContainer.viewContext
jsonEmza.forEach({ (jsonCompany) in
let tabel = jsonCompany.tableName
if tabel == "Personel"{
jsonCompany.personel?.forEach({ (field) in
let personel = Personel(context: privateContext)
personel.firstname = field.firstName
personel.idpersonel = field.id
})
do {
try privateContext.save()
} catch let saveErr {
print("Failed to save personel:", saveErr)
}
}
获取示例
let context = CoreDataManager.shared.persistentContainer.viewContext
let fetchRequest = NSFetchRequest<Personel>(entityName: "Personel")
let predicate = NSPredicate(format: "idpersonel == %@", "147")
fetchRequest.predicate = predicate
do {
let listNameh = try context.fetch(fetchRequest)
listNameh.forEach({ (item) in
print(item.idpersonel ?? "")
print(item.lastname ?? "")
print(item.firstname ?? "")
print(item.personelToChart?.id)
})
} catch let fetchErr {
print("Failed to fetch Personel:", fetchErr)
}
item.personelToChart?.id
的数据为nil
。
为什么会这样?
答案 0 :(得分:0)
就像Sam说的那样,你需要在Personel上为PersonelToChart分配一个对象。例如,这是我的核心数据模型
腿(flightId,flightName,Aircraft) 飞机(aircraftId,aircraftName) 确保您在Flight实体中的关系看起来像
let Aircraft = AircraftCoreData(context: self.persistentContainer.viewContext)
secondAircraft.aircraftId = 02334
secondAircraft.aircraftName = "ABC"
leg.aircraft = Aircraft
您将看到我们创建了飞机对象,为其属性分配了值,然后将对象分配给leg.aircraft属性。现在,当您获取数据时,您将无法获得