2010-10-19 43 views
7

tôi không thể tìm ra cách để chèn một giá trị boolean (xuất hiện như key:true trong chuỗi JSON) trong NSDictionary tôi:Mục tiêu-C: Cách đặt các giá trị boolean trong từ điển JSON?

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

Đoạn mã trên không chạy (rõ ràng vì YES không phải là một đối tượng).
Làm cách nào để thực hiện điều này?

Trả lời

11

Bạn chèn boolean vào từ điển bằng cách sử dụng NSNumber. Trong trường hợp này, bạn có thể sử dụng các biểu đen @YES trực tiếp, cùng với một nghĩa đen từ điển, để làm điều này một lớp lót:

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

Để mã hóa nó để JSON, sử dụng +[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

Tôi không chắc nó trả lời được vấn đề ở trên. Định dạng JSON khác với NSDictionary vì cách trình bày boolean. Bạn sẽ làm gì nếu có nhiều nền tảng đang gửi dữ liệu ở định dạng JSON và bạn muốn tất cả chúng đều có cùng biểu diễn (key: true)? – Ika

7

+ [Số NSNumberWithBool:] là cách điển hình để thêm boolean vào NSDictionary.

6

với literals Objective-C, [NSNumber numberWithBool: YES] có thể được biểu diễn chỉ với @YES,

bạn có thể tạo từ điển của bạn như sau:

NSDictionary *jsonDict = @{@"key":@YES}; 
Các vấn đề liên quan