核心数据:强制在其他人之前加载一个属性

时间:2011-07-01 06:45:15

标签: objective-c ios core-data

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

E.g假设您有一个模拟一组具有Person个对象的数据模型。您希望每个Person对象的某些行为发生变化,具体取决于它们的人数。因此,当每个人少于五个时,如果有6到10,那么“X”就是“Y”,依此类推。

在这种情况下,最好创建一个与跟踪Person个对象总数的所有Person个对象相关的第二个实体。然后获取所有Person个对象的计数或其中一个Person实体属性的集合总和变得快速而微不足道。