CoreData通过属性总和而不是单个记录来奖励

时间:2019-04-29 09:47:03

标签: ios swift core-data

我正在开发一个应用程序,该应用程序会在用户记录步行,骑自行车或公共汽车时奖励他们。他们会在每次旅行到达一定距离后获得奖励,但我想奖励他们使用CoreData在应用中记录的总(总)距离。

我试图查看有关同一主题的其他Stack Overflow问题,但到目前为止仍未成功

for journey in journeys where journey.distance > reward.distance {
         if earned == nil {
          earned = journey
        }

1 个答案:

答案 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看起来很有希望。