2010-10-19 11 views
7

Nie mogłem dowiedzieć się, jak wstawić wartość logiczną (pojawiać się jako key:true w ciągu JSON) w moim NSDictionary:Objective-C: Jak umieścić wartości boolowskie w słowniku JSON?

NSMutableDictionary* jsonDict = [NSMutableDictionary dictionary]; 
[jsonDict setValue: YES forKey: @"key"]; 

Powyższy kod nie działa (oczywiście bo tak nie jest obiektem).
Jak mogę to zrobić?

Odpowiedz

11

Wstawiasz booleany do słownika, używając NSNumber. W tym przypadku można użyć dosłowne wyrażenie @YES bezpośrednio wraz ze słownikiem dosłowny, aby to one-liner:

NSDictionary *jsonDict = @{@"key" : @YES}; 

zakodować go do JSON, użyj +[NSJSONSerialization dataWithJSONObject:options:error]:

NSError *serializationError; 
NSData *jsonData = [NSJSONSerialization 
        dataWithJSONObject:jsonDict 
        options:0 error:&serializationError]; 
if (!jsonData) { 
    NSLog(@"%s: error serializing to JSON: object %@ - error %@", 
      __func__, jsonDict, serializationError]; 
} 
+0

Nie jestem pewien, czy odpowiada na powyższy problem. Format JSON różni się od NSDictionary z powodu reprezentacji wartości logicznej. Co byś zrobił, gdyby było wiele platform wysyłających dane w formacie JSON i chcesz, aby wszystkie miały tę samą reprezentację (klucz: prawda)? – Ika

7

+ [Numer NSNumberWithBool:] to typowy sposób dodania wartości boolowskiej do NSDictionary.

6

z literałów Objective-C, [NSNumber numberWithBool: tAK] może być reprezentowana tylko @YES,

można tworzyć słownika tak:

NSDictionary *jsonDict = @{@"key":@YES}; 
Powiązane problemy