Привести значение NSDictionary при применении NSPredicate? - PullRequest
1 голос
/ 11 мая 2010

У меня есть массив объектов NSDictionary. Эти словари анализируются из файла JSON. Все объекты-значения в NSDictionary имеют тип NSString, один ключ называется «distanceInMeters».

Я планировал отфильтровать эти массивы с помощью NSPredicate, поэтому я начал так:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(distanceInMeters <= %f)", newValue];
NSArray *newArray = [oldArray filteredArrayUsingPredicate:predicate];

Я полагаю, что это сработало бы, если бы значение для ключа «distanceInMeters» было NSNumber, но поскольку оно у меня из файла JSON, все является NSStrings. Выше приведено это сообщение об ошибке: ****** - [Длина NSCFNumber]: нераспознанный селектор отправлен на экземпляр 0x3936f00 ***

Это имеет смысл, поскольку я только что пытался трактовать NSString как NSNumber.

Есть ли способ приведения значений из словаря во время их фильтрации или, может быть, совершенно другой способ обойти это?

Надеюсь, кто-нибудь может мне помочь:)

Ответы [ 2 ]

7 голосов
/ 11 мая 2010

Попробуйте это:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(distanceInMeters.floatValue <= %f)", newValue];
0 голосов
/ 11 мая 2010

Ваша проблема не в предикате; Ваша проблема в том, что вы имеете дело с NSString объектами, а не с NSNumber объектами. Я бы сосредоточил свое время на том, чтобы сначала изменить их на NSNumbers, а затем убедиться, что они не работают.

FYI, JSON Framework выполняет автоматический анализ чисел в NSNumbers ...

...