【问题标题】:add one NSMuatblearray to another NSMutablearray?将一个 NSMuatblearray 添加到另一个 NSMutablearray?
【发布时间】:2014-02-26 16:39:25
【问题描述】:

我有两个 nsmutableArrayArr_jsondata,第二个是tempArray

已经 Arr_jsondata 包含来自 json 链接的数据并显示在 tableview 中。

我想将 tempArray 数据添加到 Arr_jsondata 并使用 Arr_jsondata 重新加载表,因为 tableview 委托也使用此数组在 tableview 中显示数据。

但是当我将临时数组数据添加到arr_jsondata 时,它总是给我一个错误。

for (int i=0; i<[Temp_arr_JsonData count]; i++)
{
    NSString *str_brandname = [[Temp_arr_JsonData objectAtIndex:i] valueForKey:@"storebrand"];

    NSLog(@"%@",str_brandname);

    NSObject *myNewObject = [[NSObject alloc] init];

    if ([str_brandname isEqualToString:@"Nike"])
    {
        NSLog(@"Data matched");
        c++;
        myNewObject = [Temp_arr_JsonData objectAtIndex:i];
        [temparray addObject:myNewObject];
    }
}

// arr_JsonData=temparray;
[[arr_JsonData arrayByAddingObjectsFromArray:temparray] mutableCopy];
NSLog(@"%@",temparray);//display all nike related data 
NSLog(@"%@",arr_JsonData);//display null array .

[self.tableView reloadData];

[sender setSelected:YES];

最后我只想要tempdataArr_jsondata .....我该怎么办?

【问题讨论】:

  • 仅此行出错 [[arr_JsonData arrayByAddingObjectsFromArray:temparray]mutableCopy];

标签: ios objective-c nsmutablearray


【解决方案1】:

只需从数组中添加对象。见this apple's doc

if (arr_JsonData.count > 0)
    [arr_JsonData addObjectsFromArray: (NSArray*)temparray];
else 
    arr_JsonData = [NSMutableArray arrayWithArray:(NSArray*)temparray]

【讨论】:

  • 它给出了一个错误 sigbrd 错误,例如由于未捕获的异常 'NSInternalInconsistencyException' 而终止应用程序,原因:'-[__NSCFArray insertObject:atIndex:]: mutating method sent to immutable object'
  • 是的。因为你在某个地方用 NSArray 创建了。起初你在哪里创建 arr_JsonData?检查并修改它。
  • 您第二次编写的代码是正确的……谢谢亲爱的……但还有一个问题是我的 tableview 委托使用了这个数组,但它没有显示该数组中的数据……它只显示旧数据......
  • 只需发布您的委托方法代码。我会看看那个。
  • storebrand_lbl.text=[[arr_JsonData objectAtIndex:indexPath.row]valueForKey:@"storebrand"];
【解决方案2】:

你可以试试这个

[arr_JsonData addObjectsFromArray:tempArray];

【讨论】:

    【解决方案3】:

    我认为arr_JsonData 实际上不是NSMutableArray 这可以从您在答案中列出的异常描述中判断。试试这个:

    arr_JsonData = [NSMutableArray arrayWithArray:arr_JsonData];
    [arr_JsonData addObjectsFromArray: temparray];
    

    【讨论】:

      【解决方案4】:

      试试这个:

      NSMutableArray *ar = [NSMutableArray alloc] initWithArray:ar1];
      

      只需要用其他数组初始化数组,它就会包含其他数组的所有内容。

      或者这个:

      NSMutableArray *ar = [NSMutableArray alloc] initWithArray:ar1 copyItems:YES];
      

      【讨论】:

        【解决方案5】:

        mutableCopy 是为 NSArray 定义的,而不是为 NSMutableArray 定义的

        if ([arr_JsonData count] > 0)
        {
            [arr_JsonData addObjectsFromArray: temparray];
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多