1

NSDictionary オブジェクトの配列があります。これらの辞書は、JSON ファイルから解析されます。NSDictionary のすべての値オブジェクトは NSString 型で、1 つのキーは「distanceInMeters」と呼ばれます。

NSPredicate を使用してこれらの配列をフィルタリングすることを計画していたので、次のように始めました。

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

「distanceInMeters」キーの値が NSNumber の場合、これはうまくいくと思いますが、JSON ファイルから取得したため、すべてが NSStrings です。上記のエラーは次のとおりです:******* -[NSCFNumber length]: unrecognized selector sent to instance 0x3936f00***

NSString を NSNumber として扱おうとしたので、これは理にかなっています。

値がフィルタリングされている間に辞書から値をキャストする方法はありますか、それともこれを回避するまったく別の方法ですか?

誰かが私を助けてくれることを願っています:)

4

2 に答える 2

7

これを試して:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(distanceInMeters.floatValue <= %f)", newValue];
于 2010-05-11T19:55:03.827 に答える
0

あなたの問題は述語ではありません。あなたの問題は、NSStringオブジェクトを扱うのではなく、オブジェクトを扱っていることですNSNumber。最初にそれらを変更することに時間を集中してからNSNumbers、それが機能していないことを確認します。

参考までに、JSON フレームワークは数値を自動的に解析してNSNumbers...

于 2010-05-11T19:41:29.953 に答える