【发布时间】:2020-07-08 23:08:51
【问题描述】:
我正在使用 for 循环将项目附加到数组以添加到 Realm。
var transactionArray:[Transaction] = []
for _ in 1...numberOfTransactionsToAdd {
let addedTransaction = Transaction()
addedTransaction.transactionAmount = amount
addedTransaction.transactionName = name
addedTransaction.transactionDescription = desc
addedTransaction.transactionDate = datePicked
addedTransaction.transactionCategory = category
transactionArray.append(addedTransaction)
}
let transactionList = List<Transaction>()
for transaction in transactionArray {
transactionList.append(transaction)
}
try! realm.write {
realm.add(transactionList)
}
此代码运行良好,但它保存了同一日期的所有交易。
我需要通过将每周和每月的时间间隔添加到日期来使他们重复交易。
我尝试创建一个嵌套的 for 循环来添加日期组件:
for _ in 0...1 {
datePicked = Calendar.current.date(byAdding: timeComponent, to: datePicked)!
}
我已经尝试增加几个星期的时间,但这几个月都行不通:
for _ in 0...7 {
datePicked = datePicked + 24*60*60
}
如何以每周和每月的间隔附加这些 addedTransaction 对象?
【问题讨论】:
-
你怎么知道用什么来增加日期?
-
这个问题很模糊,因为我们不知道数量、名称、日期选择等是如何填充的。话虽如此,这段代码将创建一堆重复的 Transaction() 对象,它们的所有属性都是相同的。这可能不是你想要的,但也许是?你能澄清一下吗?此外,我们不知道您想对 datePicked 属性做什么。什么是每周和每月间隔?单个属性如何成为 and 例如单个属性同时拥有每周和每月的间隔?
-
@Joakim,这是我的第一个应用程序,我一直在努力解决如何实现此功能。我希望用户能够保存交易并按照他们的选择重复交易。如果他们每 2 周或第 1 和 15 周获得报酬,他们应该能够做到这一点,而无需手动执行 100 次。类似于 [TBRepeatPicker] 的东西:cocoapods.org/pods/TBRepeatPicker
-
@Jay 每笔交易都应该有一个唯一的日期。示例:用户在 6 月 12 日、7 月 12 日、8 月 12 日的帐户中有手机费用……并且重复 10 年左右。除日期外,有关交易的其他所有内容(类别、金额、名称)均相同。我喜欢 Cocoapods 上的 TBRepeatPicker,但我无法安装 Swift 4 版本。几个月前我才开始编码,我一直在尝试弄清楚如何添加此功能。
-
我不确定具体的困难在哪里。当用户选择 6 月 12 日,每月重复一年,创建 12 笔交易,相关日期为 6/6/12 7/6/12 等。这行得通吗?