Существует существующий ответ, но он основан на стороннем модуле, что неплохо, но если бы он не обновлялся в будущем, это сделало бы ответ недействительным. Кроме того, используемые объекты четко не определены.
TL; DR - нет необходимости в списке или массиве. Запишите транзакции по мере их создания и заполнения.
Подробности:
Итак, вот более полный ответ Swift, начиная с объекта TransactionClass Realm, который имеет удобный инициализатор для даты транзакции как а также первичный ключ, который обычно рекомендуется использовать для объектов.
class TransactionClass: Object {
@objc dynamic var transaction_id = UUID().uuidString
@objc dynamic var date_picked = Date()
convenience init(theDate: Date) {
self.init()
self.date_picked = theDate
}
override static func primaryKey() -> String? {
return "transaction_id"
}
}
Затем функция, которая создает ряд повторяющихся транзакций на основе selectedDate
let datePicked = Date() //using today as an example, insert your date here
let numMonths = 12 //recurring for 12 months
var dateComponent = DateComponents()
for index in 0..<numMonths {
dateComponent.month = index
if let futureDate = Calendar.current.date(byAdding: dateComponent, to: datePicked) {
let t = TransactionClass(theDate: futureDate)
try! realm.write {
realm.add(t)
}
}
}
и вывод при печати
2020-07-12 13:30:32 +0000
2020-08-12 13:30:32 +0000
2020-09-12 13:30:32 +0000
2020-10-12 13:30:32 +0000
2020-11-12 14:30:32 +0000
2020-12-12 14:30:32 +0000
2021-01-12 14:30:32 +0000
2021-02-12 14:30:32 +0000
2021-03-12 14:30:32 +0000
2021-04-12 13:30:32 +0000
2021-05-12 13:30:32 +0000
2021-06-12 13:30:32 +0000