Swift 核心数据关系保存为零
我试图保存一对多关系的一面一家公司可能有很多机会,并使用点语法保存字段 保存此记录的目的是添加新的opportunity并更新公司记录上的opportunity集 我认为核心数据应该考虑所有这些,但当我保存记录并检索它时,opportunity名称会很好地返回,但公司名称设置为nil,它会崩溃。这是我的保存代码-有人能告诉我出了什么问题吗Swift 核心数据关系保存为零,swift,core-data,Swift,Core Data,我试图保存一对多关系的一面一家公司可能有很多机会,并使用点语法保存字段 保存此记录的目的是添加新的opportunity并更新公司记录上的opportunity集 我认为核心数据应该考虑所有这些,但当我保存记录并检索它时,opportunity名称会很好地返回,但公司名称设置为nil,它会崩溃。这是我的保存代码-有人能告诉我出了什么问题吗 func saveViaCoAgain() { let context = self.fetchedResultsController.man
func saveViaCoAgain() {
let context = self.fetchedResultsController.managedObjectContext
let entity = self.fetchedResultsController.fetchRequest.entity!
var newOpp: Opportunity = NSEntityDescription.insertNewObjectForEntityForName("Opportunity", inManagedObjectContext: context) as! Opportunity
newOpp.oppName = passedOppName
newOpp.company.companyName = passedCoName
var error: NSError? = nil
if !context.save(&error) {
abort()
}
}
对于新创建的对象,newOpp.company为零。您可能需要newOpp.company=existingCompany,后者是公司对象。谢谢。如何在不使用insertnewobject的情况下创建现有公司?如果我这样做了,那么一切都会起作用,但会创建一个opportunity记录和一个company记录——我想要的是将opportunity添加到集合中,与现有的公司相对应。因此我认为问题在于是否有不同的方法初始化company对象?或者我可能误解了核心数据如何存储这些东西。我假设一对多的公司会有一个记录,并有指向多个机会记录的指针。事实上,每个机会都有一个记录吗?如果是这样,这将解释为什么我在我的公司表视图列表中看到多个公司。您能否澄清一下,如果您想向现有公司添加opportunity,但没有指向该公司对象的指针,则必须执行提取请求以获取该公司对象,例如,带有谓词的提取请求,该谓词检索具有给定名称的公司。