我正在开发一个应用程序,该应用程序会在用户记录步行,骑自行车或公共汽车时奖励他们。他们会在每次旅行到达一定距离后获得奖励,但我想奖励他们使用CoreData
在应用中记录的总(总)距离。
我试图查看有关同一主题的其他Stack Overflow问题,但到目前为止仍未成功
for journey in journeys where journey.distance > reward.distance {
if earned == nil {
earned = journey
}
答案 0 :(得分:0)
您的要求有点令人困惑。要检查某些元素的总和是否大于某个值,最好迅速使用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看起来很有希望。