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.
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"];
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"]);
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
wenn Sie mehrere Kategorien möchten, können Sie dieses Format verwenden
NSDictionary *jsonObject = @{
@"data1":@[
@{
@"title":@"A"
@"subData" : @[
@{
@"title":@"aa"
}]
}
]
};