通过 NSFetchedResultsController swift iOS 访问非持久性变量



可以通过NSFetchedResultsController访问非持久性变量吗?

我正在从核心数据创建联系人实体。
我又添加了一个我不想保留的变量,我只希望这个变量在应用程序实时范围期间,然后丢弃。

import CoreData
class Contact: NSManagedObject {
// Insert code here to add functionality to your managed object subclass
    var incomingRequest = false  <———————— temporary variable
    override init(entity: NSEntityDescription, insertIntoManagedObjectContext context: NSManagedObjectContext?) {
        super.init(entity: entity, insertIntoManagedObjectContext: context)
    }
}

我正在使用NSFetchedResultsController在表格视图上显示所有联系人。
当我设置 incomingRequest 时,NSFetchedResultsController不会触发委托didChangeObject我可以理解,这是显而易见的。
当我从NSFetchedResultsController获取联系人并尝试访问incomingRequest时,它总是给我假的。

是否有任何解决方法可以通过获取NSFetchedResultsController来获取先前设置的 incomingRequest 值?
还是在核心数据中也保存incomingRequest是唯一的解决方案?

我知道核心数据中的transient属性,但我想使用 ivars,假设将来非持久性属性将增加。

提前致谢:)
欢迎任何建议!

是否有任何解决方法可以通过获取NSFetchedResultsController来获取先前设置的传入请求值?

否,因为之前没有任何设置的值。如果多次执行相同的提取,则无法保证获得相同的对象实例。如果要从不同的托管对象上下文执行提取,则尤其如此,在这些上下文中,可以保证不会获取相同的对象。它们表示持久存储中的同一实例,但它们不是内存中的同一对象。

因此,您将incomingRequest设置为true一个对象,但随后使用获取的结果控制器并获取另一个对象。但是您尚未在另一个对象上设置 incomingRequest 值,因此它获取默认值。

是否在数据模型中包括incomingRequest取决于该值的含义以及您如何使用它。这可能是正确的答案。您可能更喜欢执行一些操作,例如保留一组NSManagedObjectID作为传入请求集合,这样您始终可以确定是否应将获取的对象视为具有传入请求。

最新更新