0

この形式のオブジェクトを含む配列を読み取るにはどうすればよいですか:

Second pair: {
latitude = "26.499023";
longitude = "42.326061";
}

??

編集:

NO..this is the way I come up with that...   

NSArray *MaparrayLongitude = [dataMap objectForKey:@"longitude"];
NSArray *MaparrayLatitude = [dataMap objectForKey:@"latitude"];

if (MaparrayLongitude.count != MaparrayLatitude.count) {
    //Error: Unequal number of longitude/latitude values
} else {
    NSMutableArray *pairs = [NSMutableArray array];
    for (int i = 0; i < MaparrayLongitude.count; i++) {
        NSDictionary *pair = [NSDictionary dictionaryWithObjectsAndKeys:
                              [MaparrayLongitude objectAtIndex:i], @"longitude",
                              [MaparrayLatitude objectAtIndex:i], @"latitude", nil];
        [pairs addObject:pair];
4

2 に答える 2

3

あなたが探していると思われる答えは、NSDictionary と呼ばれます。私は PHP から来ました。ここでは、数値でインデックス付けされているか、文字列でキー付けされている場合、配列と呼んでいました。Objective-C には、3 つの基本的な種類のコレクションがあります。

NSArray - インデックスとして順序付けられた自然な整数

NSSet - 順序付けられていないコレクション、単一メンバーシップ

NSDictionary - いくつかの種類のオブジェクトの 1 つをキーとしており、通常は文字列です。

ここにアップルのドキュメントがあります

編集:参考までに、コードは次のようになります。

double myLat = [[secondPair objectForKey:@"latitude"] doubleValue];

編集(編集後):おそらく、辞書へのアクセスと組み合わせて、高速な列挙です。

for (NSDictionary *coordinate in pairs) {
  // lat = [coordinate objectForKey@"latitude"];
}
于 2012-07-03T23:20:14.023 に答える
1

まあ、それは 2 つの float 値を持つ単純なデータ構造なので、私はそれを好みます

[NSValue valueWithCGPoint:CGPointMake(26.499023, 42.326061)];

そしてそれを配列に格納します。値を取得するには、次のようにします。

CGPoint coordinate = [[array objectAtIndex:index] CGPointValue];

次のようにCGPointの名前を定義することもできます

typedef CGPoint YourCustomNameForPoint;

次に、次のように使用します

YourCustomNameForPoint coordinate = [[array objectAtIndex:index] CGPointValue];

そうすれば混乱することはありません。;)

于 2012-07-03T23:28:21.980 に答える