2013-02-25 65 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