我正在使用NSFetchedResultsController從CoreData獲取數據並加載包含四個部分的表視圖。當應用程序第一次運行時,它可以很好地工作,將一個plist加載到CoreData中,然後獲取記錄以配置表格的4個部分中的單元格。FetchedResultsController值不會覆蓋自定義的NSManagedObject初始值
當我重新啓動應用程序時,該類的初始值似乎覆蓋了我認爲/認爲存儲在覈心數據中的值。未由該類初始化的值由NSFetchedResultsController成功加載。
例如,有一個值tableSection來定義表格部分。當在第一次表負載,它具有四個部分:
,但如果我再次運行應用程序,只有1 tableSection價值,「我的記錄」(默認值預期爲當用戶首先創建一個記錄):
我不知道,但我想這種情況發生時,我將單元配置...
func configureCell(cell: UITableViewCell, indexPath: NSIndexPath)
{
let record = fetchedResultsController.objectAtIndexPath(indexPath) as! Record ...}
它看起來像自定義類啓動時,初始值被賦值,並且永遠不會被我認爲會在fetchedResultsContainer中的值覆蓋。凡是不給自定義類初始化的值,如文本和圖像,從fetchedResultsController賦值:
class Record: NSManagedObject
{
override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?)
{
super.init(entity: entity, insertIntoManagedObjectContext: context)
let randomBit = String(arc4random_uniform(100))
iD = NSDate().toIDTimeDateString() + "-" + randomBit + "OtR"
believers = 0
deviceTime = NSDate()
doubters = 0
eventTimeStarted = NSDate()
eventTimeEnded = NSDate()
featureImageIndex = 0
coreLocationUsed = 0
photoTaken = 0
tableSection = "My Records"
timeRecorded = deviceTime
validationScore = 0
}
}
如何實例化的方式「記錄」將與覆蓋初始化值來自fetchedResultsController的數據? (如果這是我的問題)
哦是的 - 你不鼓勵重寫initWithEntity:insertIntoManagedObjectContext:和描述。如果描述在調試操作期間觸發故障,則結果可能不可預知。您通常不應覆蓋鍵值編碼方法,如valueForKey:和setValue:forKeyPath :.知道了謝謝。 – DrWhat