NSP Предикат и NSString Вопрос - PullRequest
0 голосов
/ 14 августа 2011

У меня есть следующий предикат, который отлично работает с числами, такими как 555 и 623 (3-значные числа)

Проблема в том, что у меня есть номера, такие как 005 и 009 и т. Д. (1 цифра с двумя 0 перед).

NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"ANY code BETWEEN %@",
                                    [NSArray arrayWithObjects: 
                                     [NSExpression expressionForConstantValue: [NSNumber numberWithFloat: [self.predicateFilter floatValue]]],
                                     [NSExpression expressionForConstantValue: [NSNumber numberWithFloat: [self.predicateFilter floatValue] + .99]],
                                     nil]];

В большинстве случаев предикатFilter будет строкой с номером, например @"124". Но когда я запускаю число, например 035 (обратите внимание на 0 в начале), я получаю следующий NSLog:

2011-08-13 18:32:23.989 Codes[2007:707] code 004
2011-08-13 18:32:24.018 Codes[2007:707] ANY code BETWEEN {4, 4.99}
2011-08-13 18:34:23.846 Codes[2007:707] code 083
2011-08-13 18:34:23.864 Codes[2007:707] ANY code BETWEEN {83, 83.99}

То есть эти цифры не найдены из-за 00X.

Есть ли способ, которым я могу сделать if / else или что-то, что ловит все числа, для начала которых есть 0 или 00, чтобы я мог соответственно отредактировать предикат?

EDIT:

Я думаю, мне просто нужно сделать предикат, который сопоставляет первые 3 цифры code с NSString, что равно 005. Тогда это даст мне остальные результаты, которые будут 005.5, 005.6 и т. Д.

1 Ответ

1 голос
/ 14 августа 2011

Поскольку code - это строка, вы можете вместо этого выполнить сравнение MATCH или это базовые данные.Если это базовые данные, вы можете добавить свойство для возврата code в виде целого числа codeInteger , возможно, используя переходный атрибут .

...