1

こんにちは私はこのようなjsonを取得します:

  features: (
    {
    attributes =         {
        Gecontroleerd = Ja;
    };
    geometry =         {
        x = "5.968097965285907";
        y = "52.50707112779077";
    };
}
)

このコードから:

NSDictionary *root = [NSJSONSerialization JSONObjectWithData:responseData options:0 error:nil];
NSArray *data = [root objectForKey:@"features"];
NSLog(@"features: %@", data );

for (NSArray *row in data) {
    NSString *latitude = row[5];
    NSString *longitude = row[7];
    NSString *crimeDescription = @"test";
    NSString *address = @"banaan";

また、緯度の場合は5.968097965285907、経度の場合はy値52.50707112779077をx値にする必要があります。

しかし、私はこのエラーを受け取ります:

 [__NSCFDictionary objectAtIndexedSubscript:]: unrecognized selector sent to instance   0x14831450
 2012-11-14 10:10:59.000 ArrestPlotter[6330:c07] *** Terminating app due to uncaught  exception 'NSInvalidArgumentException', reason: '-[__NSCFDictionary objectAtIndexedSubscript:]: unrecognized selector sent to instance 0x14831450'
 *** First throw call stack:
(0x1860012 0x1655e7e 0x18eb4bd 0x184fbbc 0x184f94e 0x2dbc 0x3b8f 0x1cc1e 0x16696b0 0xfa0035 0x17e3f3f 0x17e396f 0x1806734 0x1805f44 0x1805e1b 0x224a7e3 0x224a668 0x4a765c 0x25bd 0x24e5 0x1)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

行を選択する必要がある人はいますか?

行番号を変更する必要があるということだけだと思います。または、次のようなものがあるはずです:[1][5]。これがどのように機能するのかよくわかりません

4

2 に答える 2

3
NSArray *data = [root objectForKey:@"features"];
NSLog(@"features: %@", data );

for (NSDictionary *dic in data) {
  NSDictionary geometry = [dic objectForKey:@"geometry"];
  // Do what you want..
  NSString *myAwesomeX = [geometry objectForKey:@"x"];
  NSString *myAwesomeY = [geometry objectForKey:@"y"];
}
于 2012-11-14T09:23:51.473 に答える
2

ここでの問題は、メモリ内のNSDictionary (NSCFDictionary?)オブジェクトであるオブジェクト行にセレクターメッセージを送信しようとしており、 NSArrayのように管理しようとしていることです。

メソッドobjectAtIndexedSubscript(基本的にrow[5]およびrow[7]によって呼び出されます)はNSDictionaryに存在しますが、NSArrayには存在しません。

変化する

for (NSArray *row in data) {

for (NSDictionary *row in data) {

また、内部のデータの管理を変更し、ログステートメントの結果を確認し、それに応じて行動する必要があります。

これがお役に立てば幸いです。

于 2012-11-14T09:30:41.980 に答える