2015-11-04 23 views
0

我有这样的核心数据模型:(DashboardEntity是访问和登录的母公司) enter image description here追加儿童各个实体的核心数据的iOS斯威夫特

现在,我的子类DashboardEntity成从NSManagedObject继承的类。我也分类VisitEntityLogEntity,都从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)") 
       } 

但出现错误:

“无法识别的选择器发送到实例”,setManager是选择器 (来自VisitEntity,因为它在DashboardEntity上不可用)。

如果我有一个X对象的正常排列,我想补充一点,从它继承我能做到这一点在斯威夫特的对象,为什么它不与核心数据NSManagedObjects工作?

它工作正常,如果我添加一个DashboardEntity对象。

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

谢谢大家!

+0

代码不调用'setManager'。什么代码导致错误? –

回答

0

在我看来,该2条线的位置:

// 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”

对于实体参数这个原因,当经理财产试图设置,应用程序是说,DashboardEntity没有成员“经理”。

也许尝试的实体描述设置为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) 
+0

是的,就是这样!谢谢!之后有另一个错误,并修复它使用这个其他答案:http://stackoverflow.com/a/26176070/2280527 – Vladislav