CoreData награждает суммой атрибута, а не отдельных записей - PullRequest
0 голосов
/ 29 апреля 2019

Я работаю над приложением, которое поощряет пользователей, когда они записывают прогулку, поездку на велосипеде или поездку на автобусе.Они получают вознаграждение за пройденное расстояние за поездку, но я хотел бы наградить их за общее (суммарное) расстояние, которое они записали с помощью приложения, используя CoreData.

Я попытался посмотреть на другие вопросы о переполнении стека.на ту же тему, но до сих пор не удалось

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

1 Ответ

0 голосов
/ 29 апреля 2019

Это немного сбивает с толку то, что вы просите.Чтобы проверить, является ли сумма некоторых элементов больше некоторого значения, лучше всего использовать reduce в swift.Примерно так:

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, и результат может быть истинным или ложным.

Хотя было бы неплохо вычислить сумму напрямую с основными данными.Для этого этот ответ выглядит многообещающе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...