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

标签 swift uitableview core-data nsfetchedresultscontroller

我正在使用 NSFetchedResultsController 从 CoreData 获取数据并加载包含四个部分的 TableView 。当应用程序第一次运行时,它可以完美地工作,将 plist 加载到 CoreData 中,然后获取记录以配置表的 4 个部分中的单元格。

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

例如,有一个值 tableSection 来定义表部分。当表格第一次加载时,它有四个部分:

enter image description here

但是,如果我再次运行应用程序,则只有 1 个 tableSection 值,“我的记录”(用户首次创建记录时的默认值):

enter image description here

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

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

看起来,当自定义类启动时,会分配初始值,并且永远不会被我认为在 fetchedResultsContainer 中的值覆盖。自定义类 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
    }
}

如何实例化“记录”,以使用 fetchedResultsController 中的数据覆盖初始值? (如果这是我的问题)

最佳答案

不要在 init 方法中设置 NSManagedObject 的值。调用 init 后,将填充 NSManagedObject。如果您需要覆盖值,请在 awakeFromFetchawakeFromInsert 方法中执行此操作。

我强烈建议您查看 Core Data Programming Guide关于要覆盖的内容。

关于swift - FetchedResultsController 值不会覆盖自定义 NSManagedObject 初始值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36772705/

相关文章:

swift - 如何检查字符串是否只包含拉丁字符?

ios - 如何在 iOS 中使用 UICollectionView 创建附加 View

ios - 带有 AutoLayout 的 UITableViewCell 中的动态图像高度

objective-c - 如何确定/控制托管对象模型 (.mom) 文件的存储位置?

swift - UIApplicationLaunchOptionsShortcutItemKey 在 Swift 3 中不存在?

ios - 如何使用 Rx 和嵌套单元格 View 突出显示 tableView 单元格?

ios - UIKit - awakeFromNib 如果没有实现

ios - 滚动后 TableView 颜色重置

ios - 核心数据executeFetchRequest返回NSManagedObject

iOS : Remove a Persistent Storage in a Multithreading CoreData Implementation