Попробуйте:
NSString *start = @"06";
NSString *end = @"07";
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY code BETWEEN %@",
[NSArray arrayWithObjects: start, end, nil]];
NSLog(@"%@", pred);
Это работает для меня:
2011-08-13 23:45:52.019 PredicateTest[18493:707] ANY code BETWEEN {"06", "07"}
, поэтому ошибка, вероятно, в свойствах.
FWIW, constantValue
являетсяметод NSExpression.Не уверен, поможет ли это вам.
Я вижу, вы обновили свой код.Теперь очень неясно, где произошла ваша ошибка, поскольку код, который вы первоначально разместили, не отображается в добавленном вами коде и не дает дополнительной информации о свойствах, которые вы используете.
И вы говорите, что ошибка не появляется в коде, который вы первоначально опубликовали.Это происходит в другом фрагменте кода, который вы опубликовали сейчас, но мне не ясно, как это относится к исходному коду.
Обновление
По-видимому, из обсуждения в комментариях,оказывается, вам нужны числа, поэтому сделайте что-то вроде:
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY code BETWEEN %@",
[NSArray arrayWithObjects:
[NSNumber numberWithDouble: 50.0],
[NSNumber numberWithDouble: 60.0],
nil]];
Окончательное решение
Для тех, кто заинтересован: очевидно, работает следующее.
NSPredicate *pred = [NSPredicate predicateWithFormat:@"ANY code BETWEEN %@",
[NSArray arrayWithObjects:
[NSExpression expressionForConstantValue: [NSNumber numberWithDouble: 50.0]],
[NSExpression expressionForConstantValue: [NSNumber numberWithDouble: 60.0]],
nil]];