0

辞書のデータにアクセスしようとしています。次のような文字列の場合、データにアクセスできます。

cell.textLabel.text = [[item objectForKey:@"merchant"]objectForKey:@"name"];

しかし、NSNumber の構文についてはよくわかりません:

NSNumber* latFromTable = [[displayItems objectAtIndex:indexPath.row]
                                           [objectForKey:@"coords"]objectForKey:@"lat"];

上記のコードで動作しない NSStrings を使用していることはわかっています。NSNumber で動作するように変更するにはどうすればよいですか?

辞書のデータは次のように表示されます。objectForKey は「coords」です。項目 1 と 2 (緯度と経度) にアクセスしたい

 "coords": {
        "lat": 52.5032,
        "lng": 13.3445

助けてくれてありがとう。

4

3 に答える 3

2

次のコードの問題は、括弧の不一致です。

NSNumber* latFromTable = [[displayItems objectAtIndex:indexPath.row]
                                           [objectForKey:@"coords"]objectForKey:@"lat"];

したがって、次のように変更します。

float latFromTable = (float)[[[displayItems objectAtIndex:indexPath.row]
                                           objectForKey:@"coords"]objectForKey:@"lat"];
NSNumber *value = [NSNumber numberWithFloat:latFromTable];
于 2012-11-14T12:32:01.830 に答える
1

次のようにしてみてください。

float latFromTable = [[[displayItems objectForIndex:indexPath.row]
                                       [objectForKey:@"coords"]objectForKey:@"lat"] floatValue];
于 2012-11-14T12:34:16.550 に答える
0

ディクショナリ内のキーと値のペアはエントリと呼ばれます。各エントリは、キーを表す 1 つの OBJECT と、そのキーの値である 2 番目の OBJECT で構成されます。

NSInteger はオブジェクトではありません (単なる int 値です)。

だから、あなたはそれをすることはできません

---追加 schuam が提案したように、NSString を受け取り、floatValue を呼び出すことができます。

---ADDED2 ログをより正確に読みました。緯度と経度の属性を持つオブジェクトがあります。したがって、これは第 2 レベルの辞書ではありません。インターフェイス名を受け取り、これらのインターフェイスのオブジェクトを取得してみてください。

于 2012-11-14T12:33:19.813 に答える