2015-01-03 119 views
0

我試圖從我發送的消息中保存屬性到我的核心數據。但每次我保存新消息時,他們都不會追加現有的消息,而只是覆蓋整個實體。我希望你明白我的意思。Swift - 核心數據被覆蓋

我的代碼看起來是這樣的,是我的接收機是從其他VC檢索:

var receivers: [String] = [] 

     @IBAction func doneTapped(sender: AnyObject) { 

      for receiver in receivers{ 

       var textMessage = PFObject(className:"textMessage") 
       textMessage["Receiver"] = receiver 
       textMessage["Message"] = messageOutl.text 
       textMessage.saveInBackgroundWithBlock { 

        (success: Bool!, error: NSError!) -> Void in 

        if (success != nil) { 

         self.errorOccurred = true 

         NSLog("Object created with id: \(textMessage.objectId)") 

        } else { 
         NSLog("%@", error) 
        } 
       } 
      } 
      let appDel: AppDelegate = UIApplication.sharedApplication().delegate as AppDelegate 
      let contxt: NSManagedObjectContext = appDel.managedObjectContext! 
      let en = NSEntityDescription.entityForName("MainTable", inManagedObjectContext: contxt) 

      var newMessage = SecondModel(entity: en!, insertIntoManagedObjectContext: contxt) 

      for rec in receivers{ 
       newMessage.receiver = rec 
       newMessage.date = NSDate() 
       newMessage.messageType = typeOfMessage 
       contxt.save(nil) 
      } 
} 

如何解決這個爲什麼發生這種情況,將不勝感激任何建議。

編輯:我改變了我「恩」和「NewMessage作爲」到此:

​​3210

,但現在我得到一個「(LLDB)」,在第二行的錯誤。

編輯2:我通過擺脫第二個for-loop並將「save-to-core-data」代碼放在第一個for-loop中解決了這個問題。我仍然不知道爲什麼第一個代碼不應該工作。

回答

3

要插入CoreData,您需要使用

let en = NSEntityDescription.insertNewObjectForEntityForName("MainTable", inManagedObjectContext: contxt) as YourType // If you have a custom type 

當您創建的實體。

那麼你通常的東西保存這樣的:

var error: NSError? 
if !contxt.save(&error) { 
    println("Error: \(error)") 
    abort() 
} 

它看起來像你這樣做:

let en = NSEntityDescription.entityForName("MainTable", inManagedObjectContext: contxt) 

創建實體,但entityForName:inManagedObjectContext:類方法,根據documentation ,「返回與指定的託管對象上下文的持久存儲協調器關聯的託管對象模型中具有指定名稱的實體。」你不想得到你堅持的對象;你想創建一個對象並堅持它。

希望它有幫助!

+0

爲了澄清,'entityForName'只返回NSEntityDescription,這有點像Core Data對象的模式。它描述了類似於實體描述類型的對象的屬性的類型,但不是被管理對象本身。 –