gpt4 book ai didi

ios - 将子实体追加到核心数据 iOS Swift 中的实体

转载 作者:行者123 更新时间:2023-11-30 13:56:51 25 4
gpt4 key购买 nike

我有这个核心数据模型:(DashboardEntity 是 Visit 和 Log 的父级) enter image description here

现在,我对 DashboardEntity 进行了子类化进入继承自 NSManagedObject 的类。我还对 VisitEntity 进行了子类化一个LogEntity ,都继承自 DashboardEntity .

我想将一个条目附加到 DashboardEntity ,但我希望此条目是 VisitEntity ,这应该是可能的,因为它继承自 DashboardEntity ,像这样:

                // Fething dashboard entity
var dashboard = [DashboardEntity]()
let fetchRequest = NSFetchRequest(entityName: "DashboardEntity")

// Returning results as an array of DashboardEntities
do {
let results = try managedContext.executeFetchRequest(fetchRequest)
dashboard = results as! [DashboardEntity]
} catch let error as NSError {
print("Could not fetch \(error), \(error.userInfo)")
}


// Point to DashboardEntity from my database
let entity = NSEntityDescription.entityForName("DashboardEntity", inManagedObjectContext:managedContext)

// Here I create an object of type VisitEntity, that takes an extra parameter that converts json to properties
let person: VisitEntity = VisitEntity (entity: entity!, insertIntoManagedObjectContext: managedContext, jsonData: index)

// I append this new object to
do {
try managedContext.save()
dashboard.append(person)
} catch let error as NSError {
print("Could not save \(error), \(error.userInfo)")
}

但是出现错误:

"Unrecognized selector sent to instance", setManager is the selector (from VisitEntity as it's not available on DashboardEntity).

如果我有一个 X 对象的普通数组,并且我想添加一个继承自它的对象,我可以在 Swift 中执行此操作,为什么它不能与 Core Data NSManagedObjects 一起使用?

如果我添加 DashboardEntity 对象,一切正常。

这样做的原因是我有一个 UITableViewController可以同时包含访问和日志,具体取决于单元格表是否有一些选项或其他选项。

谢谢大家!

最佳答案

在我看来,这里的两行是:

 // Point to DashboardEntity from my database
let entity = NSEntityDescription.entityForName("DashboardEntity", inManagedObjectContext:managedContext)

// Here I create an object of type VisitEntity, that takes an extra parameter that converts json to properties
let person: VisitEntity = VisitEntity (entity: entity!, insertIntoManagedObjectContext: managedContext, jsonData: index)

创建一个 VisitEntity 人员实例,为其提供一个实体参数,其中 NSEntityDescription 是“DashboardEntity”而不是“VisitEntity”

因此,当尝试设置 manager 属性时,应用程序会提示 DashboardEntity 没有成员“manager”。

也许尝试将实体描述设置为 VisitEntity:

// Point to DashboardEntity from my database
let entity = NSEntityDescription.entityForName("VisitEntity", inManagedObjectContext:managedContext)

// Here I create an object of type VisitEntity, that takes an extra parameter that converts json to properties
let person: VisitEntity = VisitEntity (entity: entity!, insertIntoManagedObjectContext: managedContext, jsonData: index)

关于ios - 将子实体追加到核心数据 iOS Swift 中的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33527831/

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