【问题标题】:Nsarray with objects ios [closed]带有对象ios的Nsarray [关闭]
【发布时间】:2013-02-26 07:20:15
【问题描述】:

我必须像这样创建数组:

photos:[
      {
         "name":"20130201064350_01.jpg",
         "quantity":"2"
      },
      {
         "name":"20130201064350_02.jpg",
         "quantity":"1"
      }
   ]

这里,我有name 数组和Quantity 数组。

如何创建这种类型的数组或字典?

【问题讨论】:

  • 这不是 JSON 符号系统吗?如果是应该使用 SBJSon 来解析这种类型的数据。

标签: iphone ios ios5 nsarray


【解决方案1】:

这是NSMutableDictionary的数组

NSMutableDictionary *dic1 = [[NSMutableDictionary alloc] init];
[dic1 setValue:@"20130201064350_01.jpg" forKey:@"name"];
[dic1 setValue:@"2" forKey:@"quantity"];

NSMutableDictionary *dicn = [[NSMutableDictionary alloc] init];
[dicn setValue:@"n.jpg" forKey:@"name"];
[dicn setValue:@"n" forKey:@"quantity"];

// 和 NSArray

NSArray *myArray = [NSArray arrayWithObject:dic1, dic2, ........dicn, nil];

【讨论】:

  • setValue:forKey: 不是NSDictionary 的一部分,而是NSMutableDictionary
  • @Martin- yup...你是对的,这是我的错误。非常感谢您告诉我:)
【解决方案2】:

使用新语法,这很简单:

NSArray *photos = @[
      @{
         @"name":@"20130201064350_01.jpg",
         @"quantity":@"2"
      },
      @{
         @"name":@"20130201064350_02.jpg",
         @"quantity":@"1"
      }
   ];

(即几乎只是将@ 放在您问题的结构前面)。

【讨论】:

    【解决方案3】:
    NSArray *array = @[ @{ "name":"20130201064350_01.jpg", "quantity":"2" }, @{"name":"20130201064350_02.jpg", "quantity":"1"} ];
    //These are new literals
    

    【讨论】:

      【解决方案4】:

      如果 Quantityname 数组的计数相等。使用任何一个数组运行 for 循环并将其添加到 NSDictionary 并将该字典添加到 NSMutableArray

      例如:

       quantityArray = [NSArray arrayWithObjects:quantity1, quantity2, quantity3, ..., nil];
      
       namesArray = [NSArray arrayWithObjects:name1, name2, name3, ..., nil];
      
       NSMutableArray *mainArray = [[NSMUtableArray alloc] init];
      
       for (int i = 0; i < [namesArray count]; i++) {
      
       NSDictionary* dicitonary = [NSDictionary dictionaryWithObjectAndKeys:[namesArray objectAtIndex:i], [quantityArray objectAtIndex:i], nil];
         [mainArray addObject:dicitonary];
       }
      
       NSLog(@"mainArray = %@", mainArray);
      

      【讨论】:

        【解决方案5】:

        检查:

        NSArray,

        NSDictionary

        例如:

        NSDictionary * d1 = [NSDictionary dictionaryWithObjectAndKeys:@"20130201064350_01.jpg", @"name", [NSNumber numberWithInt:2], @"quantity", nil];
        
        NSArray * a = [NSArray arrayWithObjects:d1, d2, d3, ..., nil];
        

        【讨论】:

        • 您的 dic 键和值顺序错误。应该是这样的 [NSDictionary dictionaryWithObjectAndKeys:@"20130201064350_01.jpg", @"name", [NSNumber numberWithInt:2], @"quantity", nil];
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 2013-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多