通过 NSFetchedResultsController 访问非持久变量 swift iOS
Accessing non-persistent variable through 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
在 table 视图中显示所有联系人。
当我设置incomingRequest时,NSFetchedResultsController
不会触发didChangeObject
委托,我能理解,很明显。
当我从 NSFetchedResultsController
获取联系人并尝试访问 incomingRequest
时,它总是给我 false。
是否有任何解决方法可以通过获取 NSFetchedResultsController
来获取先前设置的 incomingRequest
值?
或者在核心数据中也保存 incomingRequest
是唯一的解决方案?
我知道核心数据中的 transient
属性,但我想使用 ivars,假设将来非持久属性会增加。
提前致谢:)
欢迎提出任何建议!
Is there any workaround to get the previously set value of incomingRequest by fetching NSFetchedResultsController
?
否,因为没有任何先前设置的值。如果多次执行相同的提取,则不能保证获得相同的对象实例。如果您正在从不同的托管对象上下文中进行提取,那么您 保证 不会获取相同的对象,这一点尤其正确。它们在持久存储中代表相同的实例,但在内存中它们不是同一个对象。
因此,您在一个对象上将 incomingRequest
设置为 true
,但随后您使用了抓取结果控制器并获得了另一个对象。但是您还没有在这个其他对象上设置 incomingRequest
的值,因此它获得默认值。
是否在您的数据模型中包含 incomingRequest
取决于该值的含义以及您如何使用它。这可能是正确的答案。您可能更愿意做一些事情,比如保留一组 NSManagedObjectID
作为传入请求集合,这样您就可以随时确定是否应将获取的对象视为具有传入请求。
是否可以通过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
在 table 视图中显示所有联系人。
当我设置incomingRequest时,NSFetchedResultsController
不会触发didChangeObject
委托,我能理解,很明显。
当我从 NSFetchedResultsController
获取联系人并尝试访问 incomingRequest
时,它总是给我 false。
是否有任何解决方法可以通过获取 NSFetchedResultsController
来获取先前设置的 incomingRequest
值?
或者在核心数据中也保存 incomingRequest
是唯一的解决方案?
我知道核心数据中的 transient
属性,但我想使用 ivars,假设将来非持久属性会增加。
提前致谢:)
欢迎提出任何建议!
Is there any workaround to get the previously set value of incomingRequest by fetching
NSFetchedResultsController
?
否,因为没有任何先前设置的值。如果多次执行相同的提取,则不能保证获得相同的对象实例。如果您正在从不同的托管对象上下文中进行提取,那么您 保证 不会获取相同的对象,这一点尤其正确。它们在持久存储中代表相同的实例,但在内存中它们不是同一个对象。
因此,您在一个对象上将 incomingRequest
设置为 true
,但随后您使用了抓取结果控制器并获得了另一个对象。但是您还没有在这个其他对象上设置 incomingRequest
的值,因此它获得默认值。
是否在您的数据模型中包含 incomingRequest
取决于该值的含义以及您如何使用它。这可能是正确的答案。您可能更愿意做一些事情,比如保留一组 NSManagedObjectID
作为传入请求集合,这样您就可以随时确定是否应将获取的对象视为具有传入请求。