开发者

Cast an NSDictionary value while applying an NSPredicate?

开发者 https://www.devze.com 2022-12-30 03:19 出处:网络
I have an Array of NSDictionary objects. These Dictionaries are parsed from a JSON file. All value objects in the NSDiction开发者_如何转开发ary are of type NSString, one key is called \"distanceInMet

I have an Array of NSDictionary objects. These Dictionaries are parsed from a JSON file. All value objects in the NSDiction开发者_如何转开发ary are of type NSString, one key is called "distanceInMeters".

I had planned on filtering these arrays using an NSPredicate, so I started out like this:

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

I believe this would have worked if the value for the "distanceInMeters" key was an NSNumber, but because I have it from a JSON file everything is NSStrings. The above gives this error:****** -[NSCFNumber length]: unrecognized selector sent to instance 0x3936f00***

Which makes sense as I had just tried to treat an NSString as an NSNumber.

Is there a way to cast the values from the dictionary while they are being filtered, or maybe a completely different way of getting around this?

Hope someone can help me :)


Try this:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(distanceInMeters.floatValue <= %f)", newValue];


Your problem isn't the predicate; your problem is that you're dealing with NSString objects instead of dealing with NSNumber objects. I would focus my time on changing them to NSNumbers first, and then verify that it's not working.

FYI, the JSON Framework does automatic parsing of numbers into NSNumbers...

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号