我正在使用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