gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 08:42:41 25 4
gpt4 key购买 nike

是否可以通过 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 在表格 View 中显示所有联系人。
当我设置 incomingRequest 时,NSFetchedResultsController 不会触发 didChangeObject 委托(delegate),我能理解,这是显而易见的。
当我从 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,但随后您使用了获取的结果 Controller 并获得了另一个对象。但是您还没有为这个其他对象设置 incomingRequest 的值,因此它获得默认值。

是否在您的数据模型中包含 incomingRequest 取决于该值的含义以及您如何使用它。这可能是正确的答案。您可能更愿意做一些事情,例如保留一组 NSManagedObjectID 作为传入请求集合,这样您就可以随时确定是否应将获取的对象视为具有传入请求。

关于ios - 通过 NSFetchedResultsController swift iOS 访问非持久变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36066388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com