2013-02-25 95 views
1

我需要存儲值在以下格式的詞典:格式化字典值

{ "UserId": 123, 
    "UserType": "blue", 
    "UserActs": [{ 
      "ActId": 3, 
      "Time": 1 
     }, { 
      "ActId": 1, 
      "Time": 6 
     }] 
    } 

我知道我需要一本字典的初使值和嵌套一個用於UserActs,但我不確定如何爲相同的鍵「ActId」和「Time」存儲單獨的值。我會如何將這些格式添加到字典中?

+1

這就是JSON。使用JSON解析器。 – 2013-02-25 16:23:26

回答

0

這是創建該字典的老,長篇大論,方式(有一個新的語法,使用Objective-C的文字,但它們是不可變的,所以我選擇了這個方法):

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init]; 
[dict setObject:[NSNumber numberWithInt:123] forKey:@"UserId"]; 
[dict setObject:@"blue" forKey:@"UserType"]; 

NSMutableArray *acts = [[NSMutableArray alloc] init]; 
[acts addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithInt:3], @"ActId", 
    [NSNumber numberWithInt:1], @"Time", 
    nil]]; 
[acts addObject:[NSMutableDictionary dictionaryWithObjectsAndKeys: 
    [NSNumber numberWithInt:1], @"ActId", 
    [NSNumber numberWithInt:6], @"Time", 
    nil]]; 
[dict setObject:acts forKey:@"UserActs"]; 
+0

謝謝,這工作。 – bardockyo 2013-02-25 16:35:24

0

你也可以使用數組和字典的簡寫形式

NSDictionary * dictionary = @{ @"UserId": @123, 
    @"UserType": @"blue", 
    @"UserActs": @[@{ 
      @"ActId": @3, 
      @"Time": @1 
     }, @{ 
      @"ActId": @1, 
      @"Time": @6 
     }] 
    }; 
+1

'[NSNumber numberWithInteger:3'] =='@ 3',使它更短! – trojanfoe 2013-02-25 16:29:54

+0

@trojanfoe不知道達。爲什麼要投票? – Shashank 2013-02-25 16:42:44

+0

這不是我的。我也有一個;幾乎在同一時間,所以我認爲這是同一個人壓倒我們兩個人。 – trojanfoe 2013-02-25 17:51:51