wake-up-neo.net

Wie erstelle ich ein NSDictionary mit mehreren Schlüsseln?

Ich bin nicht sicher, ob das, was ich fragen werde, tatsächlich eine NSDictionary mit mehreren Schlüsseln ist, aber ok.

Ich möchte eine NSDictionary mit Schlüsseln und Werten für meine Daten erstellen und sie dann in das Format JSON konvertieren. Das Format JSON würde genau so aussehen:

{
    "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"
}

Ich habe nur NSDictionaries wie folgt verwendet:

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

Das obige Format handelt jedoch nicht nur vom Schlüsselwert. Meine Frage ist also, wie würde die NSDictionary sein, um in das JSON-Format zu passen? Vielen Dank, dass Sie meinen Beitrag gelesen haben.

6
donparalias

Sie wissen, dass Sie eine NSDictionary in einer anderen NSDictonary haben können, oder?

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"];
34
Rui Peres

Jetzt gibt es mit Objective-C-Literalen eine viel bessere, einfachere und sauberere Möglichkeit, dies zu erreichen. Hier ist Ihre genaue Wörterbuch mit dieser neuen Syntax:

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"]);
14
Firo

Wie erstelle ich NSArray und mit Access für Objekte mit NSDictionary?

... NSArray erstellen

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

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

... um mit NSDictionary auf NSArray-Objekte zuzugreifen

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

Hier ist die Struktur:
Ihr Stammobjekt ist NSMutableDictionary
eventData - Schlüssel für Objekt NSMutableDictionary mit Schlüsseln und Objekten:
-> key eventDate object NSString
-> Schlüssel eventLocation Objekt NSMutableDictionary mit Schlüsseln und Objekten:
----> Schlüssel latitude Objekt NSNumber
----> Schlüssel longitude Objekt NSNumber
-> key text object NSString
-> Schlüssel imageData Objekt NSString später umgewandelt NSData
-> key imageFormat object NSString
-> key expirationTime object NSNumber
type Schlüssel für Objekt NSString
title Schlüssel für Objekt NSString

1
graver

wenn Sie mehrere Kategorien möchten, können Sie dieses Format verwenden

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

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

                             ]
                         };