FetchedResultsController 值不会覆盖自定义 NSManagedObject 初始值

FetchedResultsController values are not overwriting custom NSManagedObject init values

我正在使用 NSFetchedResultsController 从 CoreData 获取数据并加载包含四个部分的 table 视图。它在应用程序首次 运行 时完美运行,将 plist 加载到 CoreData,然后获取记录以配置 table 的 4 个部分中的单元格。

当我重新启动应用程序时出现问题,class 中的初始值似乎覆盖了我 thought/think 存储在核心数据中的值。未被 class 初始化的值被 NSFetchedResultsController 成功加载。

例如,有一个值tableSection,用于定义table个部分。当 table 第一次加载时,它有四个部分:

但是,如果我再次 运行 应用程序,只有 1 个 table 部分值,[=​​32=](用户首次创建记录时的默认值):

我不确定,但我认为在配置单元时会发生这种情况...

func configureCell(cell: UITableViewCell, indexPath: NSIndexPath)
{
    let record = fetchedResultsController.objectAtIndexPath(indexPath) as! Record ...}

看起来当自定义 class 启动时,初始化值被分配并且永远不会被我认为在 fetchedResultsContainer 中的值覆盖。自定义 class init 中未给定值的任何内容,如文本和图像,都从 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
    }
}

如何实例化一个 'Record' 以使用来自 fetchedResultsController 的数据覆盖初始值? (如果这是我的问题)

不要在 init 方法中为 NSManagedObject 设置值。 NSManagedObjectinit 被调用后被填充。如果您需要覆盖值,请在 awakeFromFetchawakeFromInsert 方法中进行。

我强烈建议查看 Core Data Programming Guide 以了解要覆盖的内容。