2016-01-28 54 views
0

我正在使用NSFetchResultsController來填充UITableView。表視圖填充了我的「Contact」NSManagedObject子類。當選擇了表格單元格中的一個,我傳遞的選擇聯繫到目標視圖控制器:核心數據變化是否反映在本地NSManagedObject子類變量中?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == kChatSegue { 
     if let controller = segue.destinationViewController as? ChatViewController { 
      if let theSelectedContact = self.selectedContact { 
       controller.contact = theSelectedContact 
      } 
     } 
    } 
} 

正如你可以從上面的代碼中看到,ChatViewController具有保持選定的聯繫人一個局部變量。

現在的問題。當對該應用程序中其他位置的特定聯繫人對象進行更改並將其保存到託管對象上下文時,對於ChatViewController的本地contact變體,更改不會得到準確反映。對NSManagedObject的更改會反映在該對象的本地變量中嗎?如果不是,我該如何強制var更新,以便它反映當前保存的值?

回答

1

託管對象不會自動反映對基礎持久存儲所做的更改。一旦取得,它們會保持其狀態,直到您更改它爲止。這通常是一件好事 - 例如,您不希望未保存的更改意外消失。

如果您想強制一個副本加載其他地方所做的更改,請在NSManagedObjectContext上使用refreshObject(:,mergeChanges:),將第二個參數設置爲true。這將告訴上下文重新加載對象的數據以反映當前保存的狀態。您可以觀察NSManagedObjectContextDidSaveNotification以確定何時可能需要加載更改。

相關問題