Swift 领域在过滤器中添加日期
Swift Realm add days to date in filter
我想根据日期和天数过滤 Swift 中的一些 Realm 结果。我有一个具有以下属性的领域对象:
class Route: Object, ObjectKeyIdentifiable, Codable {
@Persisted(primaryKey: true) var id: Int?
@Persisted var status: String?
@Persisted var bucket_name: String?
@Persisted var frequency_days: Int?
@Persisted var last_record_date: Date?
}
我想做的是在筛选结果时将 frequency_days
中的天数添加到 last_record_date
。
在我看来,我想做这样的事情(我知道你不能将 Int 添加到 Date,但这只是为了说明我的目标):
self.filteredRoutes = self.routes.where {
([=12=].last_record_date + [=12=].frequency_days < Date())
}
中也找不到任何内容
我什至不确定这是否可行,但如果有人有一些想法让这个工作或变通,我们将不胜感激。
我建议只存储您要查询的实际日期。
您知道 last_record_date 和 frequency_days 那么为什么不将它们加在一起并将其存储为日期。
例如;
假设 last_record_date 是 2022-04-01,frequency_days 是 10(天)。
如果将天数添加到 last_record_date,结果日期为 2022-04-10(包括 1 日)。
因此将其存储在 target_date 属性: 2022-04-10
只要频率日期或 last_record_date 发生变化,您只需计算一个新的目标日期并存储即可。
我建议向您的 Realm class 添加一个函数来为您完成此操作,如果您需要存储 frequency_days 和 last_record_date,您也可以这样做。
class Route: Object, ObjectKeyIdentifiable, Codable {
@Persisted(primaryKey: true) var id: Int?
@Persisted var frequency_days: Int?
@Persisted var last_record_date: Date?
@Persisted var target_date: Date?
func changeFrequencyDays(newDayCount: Int) {
self.frequency_days = newDayCount
//do some math to add newDayCount to the last_record_date
self.target_date = //new calculated date
}
func changeLastRecordDate(lastRecordDate: Date) {
self.last_record_date = lastRecordDate
//do some math to add frequency_days to the new lastRecordDate
self.target_date = //new calculated date
}
}
有了上面的内容,任何时候 frequency_days 需要更新或 last_record_date 发生变化,调用适当的函数,属性 将随着更新 target_date 属性.
我想根据日期和天数过滤 Swift 中的一些 Realm 结果。我有一个具有以下属性的领域对象:
class Route: Object, ObjectKeyIdentifiable, Codable {
@Persisted(primaryKey: true) var id: Int?
@Persisted var status: String?
@Persisted var bucket_name: String?
@Persisted var frequency_days: Int?
@Persisted var last_record_date: Date?
}
我想做的是在筛选结果时将 frequency_days
中的天数添加到 last_record_date
。
在我看来,我想做这样的事情(我知道你不能将 Int 添加到 Date,但这只是为了说明我的目标):
self.filteredRoutes = self.routes.where {
([=12=].last_record_date + [=12=].frequency_days < Date())
}
中也找不到任何内容
我什至不确定这是否可行,但如果有人有一些想法让这个工作或变通,我们将不胜感激。
我建议只存储您要查询的实际日期。
您知道 last_record_date 和 frequency_days 那么为什么不将它们加在一起并将其存储为日期。
例如;
假设 last_record_date 是 2022-04-01,frequency_days 是 10(天)。
如果将天数添加到 last_record_date,结果日期为 2022-04-10(包括 1 日)。
因此将其存储在 target_date 属性: 2022-04-10
只要频率日期或 last_record_date 发生变化,您只需计算一个新的目标日期并存储即可。
我建议向您的 Realm class 添加一个函数来为您完成此操作,如果您需要存储 frequency_days 和 last_record_date,您也可以这样做。
class Route: Object, ObjectKeyIdentifiable, Codable {
@Persisted(primaryKey: true) var id: Int?
@Persisted var frequency_days: Int?
@Persisted var last_record_date: Date?
@Persisted var target_date: Date?
func changeFrequencyDays(newDayCount: Int) {
self.frequency_days = newDayCount
//do some math to add newDayCount to the last_record_date
self.target_date = //new calculated date
}
func changeLastRecordDate(lastRecordDate: Date) {
self.last_record_date = lastRecordDate
//do some math to add frequency_days to the new lastRecordDate
self.target_date = //new calculated date
}
}
有了上面的内容,任何时候 frequency_days 需要更新或 last_record_date 发生变化,调用适当的函数,属性 将随着更新 target_date 属性.