Swift核心数据中的一对多关系

Swift核心数据中的一对多关系,swift,core-data,nsset,Swift,Core Data,Nsset,我正在构建一个日志应用程序,在其中创建一个FocusArea对象,然后包含30个日志条目对象 因此,我在数据模型中创建了一对多关系 然后我实现了两个NSManagedObject类: @objc(焦点区域) 类焦点区域:NSManagedObject{ @NSManaged var focusName: String @NSManaged var focusStart: NSDate @NSManaged var focusEnd: NSDate @NSManaged var completeF

我正在构建一个日志应用程序,在其中创建一个FocusArea对象,然后包含30个日志条目对象

因此,我在数据模型中创建了一对多关系

然后我实现了两个NSManagedObject类:

@objc(焦点区域) 类焦点区域:NSManagedObject{

@NSManaged var focusName: String
@NSManaged var focusStart: NSDate
@NSManaged var focusEnd: NSDate
@NSManaged var completeFlag: Bool
//@NSManaged var entries: NSSet

var entries: NSMutableOrderedSet {
    return self.mutableOrderedSetValueForKey("entries")
}  
 @NSManaged var entryJournal: String
 @NSManaged var entryDate: NSDate
 @NSManaged var completeFlag: Bool
 @NSManaged var entryStatus: Bool
 @NSManaged var focus: FocusArea
}

@objc(条目) 类条目:NSManagedObject{

@NSManaged var focusName: String
@NSManaged var focusStart: NSDate
@NSManaged var focusEnd: NSDate
@NSManaged var completeFlag: Bool
//@NSManaged var entries: NSSet

var entries: NSMutableOrderedSet {
    return self.mutableOrderedSetValueForKey("entries")
}  
 @NSManaged var entryJournal: String
 @NSManaged var entryDate: NSDate
 @NSManaged var completeFlag: Bool
 @NSManaged var entryStatus: Bool
 @NSManaged var focus: FocusArea
}

我可以毫无问题地添加FocusArea,但当我尝试创建30个条目对象并存储在FocusArea.entries中时,一切都会崩溃

向FocusArea对象添加多个条目对象的正确方法是什么?

我离这儿远吗

@IBAction func saveFocusArea(sender: AnyObject) {

    if txtFocusName.text != nil {

        let appDel: AppDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
        let context: NSManagedObjectContext = appDel.managedObjectContext!

        //create new focus area
        let entFocus = NSEntityDescription.entityForName("FocusArea", inManagedObjectContext: context)
        let newFocus = FocusArea(entity:entFocus!, insertIntoManagedObjectContext: context)

        newFocus.focusName = txtFocusName.text!
        newFocus.focusStart = NSDate()
        newFocus.focusEnd = NSDate().dateByAddingTimeInterval(60*60*24*30)
        newFocus.completeFlag = false

        //initialize 30 new entries into core data
        let entEntry = NSEntityDescription.entityForName("Entry", inManagedObjectContext: context)

        for var i = 0; i < 30; i++ {

            let newEntry = Entry(entity:entEntry!, insertIntoManagedObjectContext: context)

            let c = Double(i)
            newEntry.entryDate = NSDate().dateByAddingTimeInterval(60*60*24*c)
            newEntry.entryJournal = ""
            newEntry.entryStatus = false
            newEntry.completeFlag = false

            //THIS IS THE PROBLEM AREA
            newFocus.entries.append(newEntry)
        }
        do {
            try context.save()
        } catch {
            print("There's a problem!")
        }
    }
} 
@IBAction func saveFocusArea(发送方:AnyObject){
如果txtFocusName.text!=nil{
让appDel:AppDelegate=UIApplication.sharedApplication().delegate为!AppDelegate
让上下文:NSManagedObjectContext=appDel.managedObjectContext!
//创建新的重点领域
让entFocus=NSEntityDescription.entityForName(“FocusArea”,inManagedObjectContext:context)
让newFocus=focusrea(实体:entFocus!,insertIntoManagedObjectContext:context)
newFocus.focusName=txtFocusName.text!
newFocus.focusStart=NSDate()
newFocus.focusEnd=NSDate().dateByAddingTimeInterval(60*60*24*30)
newFocus.completeFlag=false
//在核心数据中初始化30个新条目
让entEntry=NSEntityDescription.entityForName(“Entry”,inManagedObjectContext:context)
对于变量i=0;i<30;i++{
让newEntry=Entry(实体:entEntry!,insertIntoManagedObjectContext:context)
设c=Double(i)
newEntry.entryDate=NSDate().dateByAddingTimeInterval(60*60*24*c)
newEntry.entryJournal=“”
newEntry.entryStatus=false
newEntry.completeFlag=false
//这就是问题所在
newFocus.entries.append(newEntry)
}
做{
尝试context.save()
}抓住{
打印(“有问题!”)
}
}
} 

我想出来了。我所要做的就是:

newEntry.focus=newFocus


因此,与其设置父对象与子对象之间的关系,不如将其从子对象设置为父对象

我明白了。我所要做的就是:

newEntry.focus=newFocus

因此,与其设置父对象与子对象之间的关系,不如将其从子对象设置为父对象