Вопрос. Как настроить NSPredicate для суммирования значений свойств внутри словарей в массиве словарей в iOS?
Примечание: ответ должен быть одной строкой, используемой в аргументе формата объекта NSPredicate. Например: var pred1:NSPredicate = NSPredicate.init(format: *ANSWER*)
Предположим, у меня есть следующий словарь:
var ticketState:Dictionary =
[
"orderTotal":1.2,
"payments":
[
[
"authCode":"12345",
"isVoid":"false",
"amount":1.0
],
[
"authCode":"54321",
"isVoid":"false",
"amount":0.2
]
],
"associatedWithReturn":false
]
Теперь я хочу, чтобы NSPredicate
проверял, равна ли сумма всех сумм сумме заказа.
Что-то типа:
var cond1:String = "sum($payments[].amount == $orderTotal)"
Примечание. Я не могу использовать фильтрацию массива или второй предикат.
Я могу получить доступ к первой сумме платежа следующим образом:
var cond1:String = "$payments[1].amount > 0" //works, returns true
Это вернет true. Я просто хочу проверить, что сумма всех сумм в платежах равна общей сумме заказа. Это должна быть простая операция, определяемая одним предикатом.
Как мне написать однострочное объявление NSPredicate, которое выполняет это?
Примечание: есть очень конкретная причина, по которой мне нужна однострочная, одиночная строка формата инициализации NSPredicate. Но это деталь реализации; не беспокойтесь об этом, потому что у кого-то другого может быть другая причина, чем у меня, для необходимости такого же типа инициализации.