Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将NSMutableDictionary添加到NSMutableArray_Ios_Objective C_Nsmutabledictionary - Fatal编程技术网

Ios 将NSMutableDictionary添加到NSMutableArray

Ios 将NSMutableDictionary添加到NSMutableArray,ios,objective-c,nsmutabledictionary,Ios,Objective C,Nsmutabledictionary,NSLog将像 NSMutableArray *arrData =[NSMutableArray array]; arrData =[data objectForKey:@"data"]; NSLog(@"%@",arrData); 此数据来自服务器。现在,我想再向这个数组添加一个来自服务器的数据字典 我做了以下工作: data = ( { date = "2016-01-20"; "end_time" = "12:25:00"; "st

NSLog将像

NSMutableArray *arrData =[NSMutableArray array];
arrData =[data objectForKey:@"data"];
NSLog(@"%@",arrData);
此数据来自服务器。现在,我想再向这个数组添加一个来自服务器的数据字典

我做了以下工作:

data = 
(
   {
        date = "2016-01-20";
        "end_time" = "12:25:00";
        "start_time" = "11:00:00";
        "total_units" = 59;
    }
); 
现在应用程序崩溃了。出了什么问题

NSMutableDictionary *newDict = [NSMutableDictionary dictionary];
[newDict setObject:@"2016-01-22" forKey:@"date"];
[arrData addObject:newDict]; 
是来自
NSArray
类的方法,它创建
NSArray
实例,而不是
NSMutableArray
实例

例如,您需要的是:

NSMutableArray *arrData =[NSMutableArray array];
参考:

请改用上面的代码。 旧代码只需将
arrData
的指针移动到[data objectForKey:@“data”]。它访问相同的地址

NSMutableArray *arrData = [NSMutableArray arrayWithArray:[data objectForKey:@"data"]];
现在,您可以在数组中添加任何对象,使用:

for (NSDictionary *dict in [data objectForKey:@"data"])
{
    [arrData addObject:dict];
}

为了创建数组的可变副本。

请确保数组必须是可变的。尝试这样分配阵列

arrData = [data[@"data"] mutableCopy];
 NSMutableArray *arrData = [[NSMutableArray alloc] init];
将响应对象分配给数据,如下所示

arrData = [data[@"data"] mutableCopy];
 NSMutableArray *arrData = [[NSMutableArray alloc] init];
然后执行以下操作,并避免在变量名的开头使用new关键字

NSMutableArray *arrData = [responseDictionary objectForKey:@"data"];

您正在将NSDictionary对象引用分配给NSMutableArray对象

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
                       [dict setObject:@"2016-01-22" forKey:@"date"];
                       [arrData addObject:dict]; 
然后,当您尝试对arrData执行addObject方法时,它会崩溃,因为NSDictionary对象不存在addObject方法

使用:


修改了此行arrData=[[data objectForKey:@“data”]mutableCopy];确保数组必须是可变的。试着像这样分配数组
NSMutableArray*arrData=[[NSMutableArray alloc]init]好,所以你在这里不是很直率。你说
NSMutableArray*arrData=[NSMutableArray]
但是我希望你从JSON解析中重新分配
arrData
,是吗?@谢谢kb920,它的工作原理一点也不正确。我不相信OP正确地提出了这个问题。我相信
arrData
稍后会被重新分配一个不可变数组。
arrData =[data objectForKey:@"data"];
[arrData addObject:[data objectForKey:@"data"]]