我正在开发一款应用程序,当用户记录步行、骑自行车或乘坐公共(public)汽车时,该应用程序会奖励用户。他们在每次旅程达到一定距离后会获得奖励,但我想根据他们使用 CoreData
通过应用程序记录的总距离进行奖励。
我尝试查看有关同一主题的其他 Stack Overflow 问题,但到目前为止尚未成功
for journey in journeys where journey.distance > reward.distance {
if earned == nil {
earned = journey
}
最佳答案
你的要求有点令人困惑。要检查某些元素的总和是否大于某个值,最好在 swift 中使用 reduce
。类似于以下内容:
private func checkRewardAchieved(_ reward: Reward, withJourneys journeys: [Journey]) -> Bool {
return journeys.reduce(0.0, { $0 + $1.distance }) >= reward.distance
}
此处 journeys.reduce(0.0, { $0 + $1.distance })
将返回数组中所有距离的总和。然后将总和与奖励>=reward.distance
进行比较,结果要么为真,要么为假。
不过,直接使用核心数据计算总和可能会更好。这样做this answer看起来很有希望。
关于ios - CoreData 通过属性总和而不是单个记录进行奖励,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55900781/