IIRC, вы можете сделать это:
$player.currencyDictionaries[0].earned > 1000
(вам может потребоваться сделать ['0']
, чтобы гарантировать, что переданное значение является строкой, а не числом)
Обратите внимание, чтоэтот синтаксис ([0]
) только работает в строках формата предиката.Он не работает с ключевыми путями.
Этот синтаксис определен в разделе " Выражение индекса " в предикате BNF.
EDIT
На самом деле, это не сработает, и вот почему:
Строка "$player.currencyDictionaries[0].earned"
будет прочитана и превращена в NSExpression
типа NSKeyPathExpression
.Это означает, что когда он вычисляется, он собирается взять эту строку и выполнить ее с помощью метода -valueForKeyPath:
получателя.Как я упоминал выше, синтаксис скобок не работает с ключевыми путями, и, следовательно, это приведет к неправильному ответу.
Однако, поскольку вы знаете, currencyDictionaries
возвращает NSDictionary
, а с NSDictionary
переопределяет метод -valueForKey:
, вы можете превратить бит [0]
в ключевой путь, превратив его в буквенную строку:
$player.currencyDictionaries.'0'.earned