【发布时间】:2019-06-06 06:44:05
【问题描述】:
我的 realmDB 中有近十万条记录,每次用户根据同一张表中的其他属性更改其设备时区时,我都想重新计算特定属性。
例子:
class Activity: Object {
// In UTC received from server
dynamic var effectiveDate: Date?
// Needs to be re-calculated everytime user launches the app based on `effectiveDate`
dynamic var effectiveDay: Date?
}
假设:我的领域表中有 100,000 条此类活动记录,名为 Activities
此外,realm 指出,将 KVC 应用于集合是批量更新对象的好方法,无需在为每个项目创建访问器时迭代集合的开销。
在我的例子中,我不想为每条记录设置相同的值,而是想使用 KVC 根据effectiveDate 属性为每条记录重新计算effectiveDay,以避免迭代的开销。有可能吗?
【问题讨论】:
-
让我重新陈述这个问题。您有一个人的结果对象,并希望将所有人的行星属性设置为“地球”。问题:每个人是否已经有一个设置为其他东西的行星属性?
-
不,我不是这个意思。让我们一个
Person持有两个属性dateTime在 UTC 和day(在当前时区)。每当用户更改其移动时区时,我想重新计算day属性。 -
问题和评论有点含糊。用户将使用什么过程来更改他们的时区。您的意思是更改 App 中的时区还是更改 iPhone 设置-> 日期和时间的时区。这导致了一个额外的问题;当时区更改时,您的应用如何通知该更改以及可以轻松地从 dateTime 派生日期属性单独存储的目的是什么?
-
我已经更新了我的问题,它现在应该会给你更多的见解。请看一下
-
目前还不清楚您为什么想要或需要这样做。让我重申一下这个问题:您的应用程序有一个用户并且该用户有活动。在应用程序启动时,如果用户用户更改了他们的时区,您希望根据 EffectiveDate 重新计算 EffectiveDay。听起来您要向他们展示当天的用户活动,这将通过查询来完成,您可能也不需要保留 day 属性,因为它们可以很容易地从 Date 对象中派生和查询- 如果您的设备支持时区,这将自动发生。
标签: ios swift realm realm-mobile-platform