可以通过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
作为传入请求集合,这样您始终可以确定是否应将获取的对象视为具有传入请求。