NSpredicate "и" операция не работает должным образом - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующие данные, когда я получаю все значения из основного объекта данных, когда я зацикливаюсь и печатаю значения, у меня есть этот

  • тип: InviteBy: мобильный
  • emp: 1: 1234123131
  • emp: 1: 2314213211
  • Cust: 1: 1214212312
  • Cust: 1: 2412142121
  • Cust: 1: 5421321421
  • emp: 2: 3214213211

Я хочу отфильтровать все записи, которые не относятся к типу emp и не приглашены 1, все значения имеют тип string.так что мой предикат -

let predicate = NSPredicate(format: "(type != %@) && (invitedBy != %@)","emp", "1")

, когда я получаю значения с этим предикатом, он возвращает пустое целое из последних 4 значений.

Если бы мне нужно было написать запрос в mysql, я бы написал

SELECT * FROM invite where type != "emp" AND invitedBy != "1"

Так что предикат я написал неправильно, и если я по-другому.

Спасибо за любыепомощь.

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Я думаю, что это право на возврат пустым.screenshot

0 голосов
/ 07 июня 2018

Снова ваш предикат:

NSPredicate(format: "(type != %@) && (invitedBy != %@)","emp", "1")

Подставляя %@, это то же самое, что

(type != 'emp') && (invitedBy != '1')

Ваша жалоба

когда я получаю значения с этим предикатом, он возвращает пустую вставку из последних 4 значений.

Вот ваша последняя запись:

emp: 2: 3214213211

Давайте подставим в предикат и упростим:

('emp' != 'emp') && ('2' != '1')
FALSE && TRUE
FALSE

Таким образом, предикат является ложным для последней записи.На самом деле, это ложно для всех записей.Вы можете проверить другие записи вручную, чтобы проверить.

Если вы хотите предикат, который верен для последних четырех записей, вы, вероятно, захотите это вместо:

NSPredicate(format: "(type != %@) || (invitedBy != %@)","emp", "1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...