Ios 将NSMutableDictionary添加到NSMutableArray
NSLog将像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
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"]]