關於以下內容的任何建議?幫助非常感謝:NSFetchedResultsController在保存到核心數據時未更新
我已經安裝了NSFetchedResultsController
如下:
它是由一個聊天實體一對多的關係聯繫起來。聊天>>消息。一個聊天(由CurrentChatter定義)有很多消息。
當我加載的tableview ...的消息顯示完全用我的ViewDidLoad()
如下:
do {
try fetchedResultsController.performFetch()
} catch let fetchError as NSError {
print("I have been unable to fetch things .. : \(fetchError)")
}
當我使用以下樣板代碼保存的消息,似乎沒有任何與NSFetchedResultsController
發生。由於某種原因,tableView沒有更新,我似乎無法解決原因。我有NSFetchedResultsControllerDelegate
就位和定義。
if let newMessage = NSEntityDescription.insertNewObjectForEntityForName("Messages", inManagedObjectContext: mOC) as? Messages {
newMessage.messageDate = NSDate()
newMessage.messageFrom = myMainUser.mainUserIDfromServer
newMessage.messageMustBeSent = false
newMessage.messageReceivedAtServer = true
newMessage.messageCode = 0
newMessage.messageType = 100
newMessage.messageText = "Here is a message I am sending to you!"
newMessage.messageTo = Int(profileID)!
newMessage.messageNewMessage = false
currentChatter.mutableSetValueForKey("messages").addObject(newMessage)
do {
try mOC.save()
} catch let saveError as NSError {
print("I have not been able to save the message ...: \(saveError)")
}
}
我打電話給mOC.save。我檢查過它已保存,並且保存到相同的ManagedObjectContext
。當我手動刷新tableview時,顯示新消息。
爲了測試這個工作我有一個簡單的print語句如下:
func controllerWillChangeContent(controller: NSFetchedResultsController) {
print("I will make changes?")
}
不用說,這是沒有得到調用。
這是因爲新消息被添加爲我的CurrentChatter的一部分。還是應該每次更新郵件實體時都進行更新?或者我完全錯過了什麼? 3個小時,我不理解爲什麼它不工作。
在此先感謝。
UPDATE:
我添加的代碼按日期排序表(增加供參考):
import Foundation
import CoreData
class Messages: NSManagedObject {
func sectionTitle() -> String {
let myDate = NSDateFormatter()
myDate.dateFormat = "d MMM YYYY"
return myDate.stringFromDate(self.messageDate)
}
}
您的控制器中是否有典型的FRC委託方法代碼? – andrewbuilder