web-dev-qa-db-ja.com

複数のキーでNSDictionaryを作成するにはどうすればよいですか?

私が尋ねようとしているのが実際に複数のキーを持つNSDictionaryであるかどうかはわかりませんが、大丈夫です。

私がやりたいのは、データのキーと値を使用してNSDictionaryを作成し、それをJSON形式に変換することです。 JSON形式は次のようになります:

{
    "eventData": {
        "eventDate": "Jun 13, 2012 12:00:00 AM",
        "eventLocation": {
            "latitude": 43.93838383,
            "longitude": -3.46
        },
        "text": "hjhj",
        "imageData": "raw data",
        "imageFormat": "JPEG",
        "expirationTime": 1339538400000
    },
    "type": "ELDIARIOMONTANES",
    "title": "accIDENTE"
}

私はこのようにNSDictionariesのみを使用しました:

NSArray *keys = [NSArray arrayWithObjects:@"eventDate", @"eventLocation", @"latitude"  nil];
NSArray *objects = [NSArray arrayWithObjects:@"object1", @"object2", @"object3", nil]; 
dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];

しかし、上記の形式は、キーと値のすべてではありません。だから私の質問は、NSDictionaryフォーマットに合うようにJSONはどうなるのか?私の投稿を読んでくれてありがとう、そして混乱があれば申し訳ありません。

7
donparalias

別のNSDictionaryの中にNSDictonaryを入れることができることを知っていますか?

NSDictionary *eventLocation = [NSDictionary dictionaryWithObjectsAndKeys:@"43.93838383",@"latitude",@"-3.46",@"latitude", nil];

NSMutableDictionary *eventData = [NSDictionary dictionaryWithObjectsAndKeys:eventLocation,@"eventLocation", nil];
[eventData setObject:@"Jun 13, 2012 12:00:00 AM" forKey:@"eventDate"];
[eventData setObject:@"hjhj" forKey:@"text"];
.
.
.
NSMutableDictionary *finalDictionary = [NSMutableDictionary dictionaryWithObjectsAndKeys:eventData,@"eventData", nil];
[finalDictionary setObject:@"ELDIARIOMONTANES" forKey:@"type"];
[finalDictionary setObject:@"accIDENTE" forKey:@"title"];
35
Rui Peres

現在、Objective-Cリテラルを使用すると、これを実現するためのはるかに優れた、より簡単で、よりクリーンな方法があります。この新しい構文を使用した正確な辞書は次のとおりです。

NSDictionary *dictionary = @{
    @"eventData": @{
        @"eventDate": @"Jun 13, 2012 12:00:00 AM",
        @"eventLocation": @{
            @"latitude": @43.93838383,
            @"longitude": @-3.46
        },
        @"text": @"hjhj",
        @"imageData": @"raw data",
        @"imageFormat": @"JPEG",
        @"expirationTime": @1339538400000
    },
    @"type": @"ELDIARIOMONTANES",
    @"title": @"accIDENTE"
};

// Prints: "43.93838383"
NSLog(@"%@", dictionary[@"eventData"][@"eventLocation"][@"latitude"]);
15
Firo

NSArrayを作成し、NSDictionaryを使用してオブジェクトにアクセスする方法は?

... NSArrayを作成

NSArray *studentkeys = [NSArray arrayWithObjects:@"studentName", @"studentBirthDate", @"studentCity", @"studentMobile"  nil];

NSArray *objects = [NSArray arrayWithObjects:@"Pravin", @"27/08/1990", @"Bhavnagar",@"7878007531", nil]; 

... NSDictionaryを使用してNSArrayオブジェクトにアクセスする

NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:objects forKeys:keys];                                  

構造は次のとおりです。
ルートオブジェクトはNSMutableDictionaryです
eventData-キーとオブジェクトを使用したオブジェクトNSMutableDictionaryのキー:
->キーeventDateオブジェクトNSString
->キーeventLocationオブジェクトNSMutableDictionaryキーとオブジェクト:
---->キーlatitudeオブジェクトNSNumber
---->キーlongitudeオブジェクトNSNumber
->キーtextオブジェクトNSString
->キーimageDataオブジェクトNSStringは後でNSDataに変換されます
->キーimageFormatオブジェクトNSString
->キーexpirationTimeオブジェクトNSNumber
typeオブジェクトのキーNSString
titleオブジェクトのキーNSString

1
graver

複数のカテゴリが必要な場合は、この形式に従うことができます

NSDictionary *jsonObject = @{
                           @"data1":@[
                              @{
                                @"title":@"A"

                                @"subData" : @[
                                @{
                                  @"title":@"aa"
                                 }]
                                }

                             ]
                         };