Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 核心数据关系保存为零_Swift_Core Data - Fatal编程技术网

Swift 核心数据关系保存为零

Swift 核心数据关系保存为零,swift,core-data,Swift,Core Data,我试图保存一对多关系的一面一家公司可能有很多机会,并使用点语法保存字段 保存此记录的目的是添加新的opportunity并更新公司记录上的opportunity集 我认为核心数据应该考虑所有这些,但当我保存记录并检索它时,opportunity名称会很好地返回,但公司名称设置为nil,它会崩溃。这是我的保存代码-有人能告诉我出了什么问题吗 func saveViaCoAgain() { let context = self.fetchedResultsController.man

我试图保存一对多关系的一面一家公司可能有很多机会,并使用点语法保存字段

保存此记录的目的是添加新的opportunity并更新公司记录上的opportunity集

我认为核心数据应该考虑所有这些,但当我保存记录并检索它时,opportunity名称会很好地返回,但公司名称设置为nil,它会崩溃。这是我的保存代码-有人能告诉我出了什么问题吗

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,但没有指向该公司对象的指针,则必须执行提取请求以获取该公司对象,例如,带有谓词的提取请求,该谓词检索具有给定名称的公司。