NSPredicate с 64-разрядными целыми числами? - PullRequest
1 голос
/ 25 марта 2011

Я пытаюсь использовать NSPredicate с 64-битными числами, но по какой-то причине он не работает. Я создаю предикат со следующей строкой:

[NSString stringWithFormat:@"UID == %qu", theUID]

И это всегда терпит неудачу. И все же, если я прокручиваю свои объекты и сравниваю if ( UID == theUID ), я найду тот, который подходит Я действительно не понимаю, почему это работает неправильно.

Вышеупомянутое выглядит правильно? Мои предикаты прекрасно работают для других целых или даже строк. Но, похоже, это не помогает.

Спасибо!

Редактировать: Так странно ... поэтому я создаю свой предикат, выполнив:

NSPredicate *myPredicate = [NSPredicate predicateWithFormat:myString];

Теперь, когда я печатаю myString, а затем печатаю myPredicate (выполняя NSLog(@"%@", blah);), я получаю:

Строка: UID == 17667815990388404861 Предикат: UID == 9223372036854775807

Это одна и та же строка, почему они разные?

1 Ответ

2 голосов
/ 25 марта 2011

Возможно, theUID не является значением без знака?

Более надежный способ построения предикатов - передать NSNumber:

NSNumber *theUIDNum = [NSNumber numberWithUnsignedLongLong:theUID];
[NSString stringWithFormat:@"UID == %@", theUID]

Это дает вам бонусную возможность отладки ираспечатайте значение UINum, чтобы убедиться в правильности перехода.

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