计算属性vs. Core Data和Swift中的持久存储



我有一种感觉,这是一个愚蠢的问题,但我是新手,我找不到一个明确的答案。

我有一个Activity实体和一个Sessions实体。每个活动可以有多个会话。每个会话都有一个持续时间属性。

现在我想要一个活动的平均会话持续时间。我应该添加一个averageSessionDuration属性到我的活动实体和更新它,并在用户添加或删除会话时持久化它,或者我可以只是添加一个计算属性到我的活动类,并让它计算平均会话持续时间每当它被调用?

我想使用计算属性,平均会话持续时间将被计算得比必要时更频繁一些,但我不知道这是否重要,它最终会产生差异吗?

我不知道窗帘后面发生了什么,是获取每个会话持续时间和采取平均要比仅仅获取一个在必要时更新和持久的averageSessionDuration属性昂贵得多吗?这种情况下的最佳实践是什么?我还遗漏了什么吗?

提前感谢,

丹尼尔

这很可能不会对性能产生任何影响,但它会是更干净的代码(我认为),如果你使用计算属性,而不是试图确保它总是最新的,当你保存其他值

如果你害怕性能问题,你可以每次会话缓存计算值,当你在应用程序中改变值时使缓存无效。这可能是两个世界中最好的。

这是一个品味的问题,我相信双方都有各自的理由。

如果你打算获取那个属性,那么你会想要持久化它。这是假设一个SQLite存储。

如果你永远不打算从中获取,那么计算属性将会更简洁。

最新更新