【问题标题】:Core Data: force one attribute to load before others核心数据:强制一个属性在其他属性之前加载
【发布时间】:2011-07-01 06:45:14
【问题描述】:

我的实体中有一些从另一个瞬态属性派生的瞬态属性(调用是 X)。当我进行提取时,它似乎试图以不特定的顺序加载所有属性,因此如果 X 需要一些时间来计算,则其他派生属性会尝试使用 X 并且它为空,因此会导致问题。

有没有办法强制 Core Data 确保在其他属性可以读取之前加载一个属性?还是在属性 X 完成加载后强制其他属性重新加载?任何人会推荐任何其他技术?我在由 NSFetchedResultsController 支持的 iOS tableView 中使用它。

【问题讨论】:

    标签: objective-c ios core-data


    【解决方案1】:

    不,您不能强制按顺序“加载”属性,因为属性不会加载。您在此处初始化对象,而不是读取程序数据库中的单元格。

    我猜你试图根据外部对象的属性或计数来计算一些值。如果是这样,那么当其他对象出现故障时,您可能会严重减速,以便可以访问它们的值。

    如果是这样,那么您遇到了数据模型设计问题。我从未见过如此复杂的瞬态值,以至于它的计算会影响操作。您可能需要将其拆开,甚至将其移动到自己的对象上。

    例如,假设您有一个数据模型,可以模拟一组拥有Person 对象的人。您希望每个 Person 对象的某些行为根据他们的人数而改变。因此,当少于 5 个时,如果有 6 到 10 个,则每个人都做“X”,你做“Y”,依此类推。

    在这种情况下,最好创建与所有 Person 对象相关的第二个实体,以跟踪 Person 对象的总数。然后获取所有Person 对象的计数或Person 实体属性之一的总和变得快速而简单。

    【讨论】:

      猜你喜欢
      • 2012-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多