核心数据 - 我可以将计算值存储为持久属性吗?

时间:2010-11-22 14:32:26

标签: cocoa performance core-data fetch transient

背景

  • 我有一个存储在瞬态属性中的计算值。
  • 每次我的应用启动时,瞬态都需要更新。
  • 启动时间非常慢(即10-15秒)
  • 仪器确认更新非常昂贵。

问题

将计算值存储在持久属性中是否可以?

我会使用Martin Brugger's Dependant Properties来更新计算值。

更多信息

我的计算值是数千个对象的持续时间:

Name                       Duration
Users                      70s            
    Proposal.doc           35s   
      12:32-12:32          5s   
      13:11-13:11          30s   
    Proposal2.doc          35s   
      14:32-14:32          15s   
      15:11-15:11          20s   
    ...thousands more objects...

我尝试过什么

  • 我使用预取和setReturnsObjectsAsFaults:NO最小化了触发的故障数量,但它使用了大量内存,但仍需要很长时间。

  • 我的瞬态更新代码和我知道的一样有效。

  • 我知道我可以在后台线程上获取并使用进度条,但我更希望用户不必等待。

1 个答案:

答案 0 :(得分:2)

我不确定我是否完全理解这个问题,但对我认为你所问的问题的简单回答当然是“。” : - )

具有瞬态,实时计算的“currentTotalDuration”值“cachedTotalDuration”属性完全没有错。当“currentTotalDuration”更新时,将其抛入“cachedTotalDuration”并完成。对于我来说,拥有持久缓存属性以及仅在需要更新时才使用的“实时计算”瞬态值听起来是完全合理的。

我不熟悉Martin Brugger的Dependent Properties,但听起来大部分的努力已经为你完成了。

我希望我回答你实际问过的问题。 :-D