【问题标题】:Need Help Understanding Transient Property in IOS Core Data需要帮助了解 IOS 核心数据中的瞬态属性
【发布时间】:2013-09-10 19:16:12
【问题描述】:

我不明白为什么核心数据中的事情必须如此困难。我有一个实体有 2 个小数属性,“扩展”和“数量”

我要做的就是扩展这 2 个值(相乘)并在 fetch 中引用这个计算值。如 NSDecimalNumber * extendedPrice = [self.qty decimalNumberByMultiplyingBy:self.rate];

但在其他情况下,我会想@sum:这个扩展值属性。

网络上可用的文档和示例对于如何执行此操作非常薄弱,在我看来这是很常见的事情。

我认为我需要一个瞬态属性和一个 awakefromfetch 调用是不是走错了路?当我尝试在 fetch 中引用瞬态属性时发生崩溃。

【问题讨论】:

    标签: ios core-data fetch transient


    【解决方案1】:

    如果您使用的是 SQLite 存储,则不能在获取请求中使用瞬态属性。这是因为 fetch 谓词被转换为 SQL 查询,实际上并没有调用任何代码。如果该属性在商店中不存在,则无法使用。

    如果您想获取对象然后对它们进行过滤/求和,那么这将适用于瞬态,因为此时您实际上拥有对象的实例。

    【讨论】:

    • 嗯,这不是我想听到的。那么有没有办法在所有保存之前“触发”后端自动计算(扩展)非瞬态属性的值? (因此,在保存上下文之前,我不必在各种视图中以各种方法进行计算)然后我将仅引用“extendedValue”属性并知道它是正确的并且实际上代表了 qty*extended 持久化。
    • 如果您只需要在保存时更新它,您可以实现 willSave 并计算 + 设置它。
    猜你喜欢
    • 2011-06-17
    • 2011-11-22
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-03
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多