NSMutableArray *arrData =[NSMutableArray array];
arrData =[data objectForKey:@"data"];
NSLog(@"%@",arrData);
NSLog将打印如
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];
现在应用程序崩溃了。出了什么问题?
[__NSArrayI addObject:]: unrecognized selector sent to instance 0x7fc4d3914d40
答案 0 :(得分:0)
NSMutableArray *arrData =[NSMutableArray array];
是来自NSArray
类的方法,它创建NSArray
实例,而不是NSMutableArray
实例。
您需要的是,例如:
NSMutableArray *arrData =[NSMutableArray arrayWithCapacity:0];
答案 1 :(得分:0)
NSMutableArray *arrData = [NSMutableArray arrayWithArray:[data objectForKey:@"data"]];
请改用以上代码。
您的旧代码只是将arrData
的指针移动到[data objectForKey:@“data”]]。它访问相同的地址
答案 2 :(得分:0)
for (NSDictionary *dict in [data objectForKey:@"data"])
{
[arrData addObject:dict];
}
现在您可以添加任何想要添加到数组中的对象
答案 3 :(得分:0)
使用:
arrData = [data[@"data"] mutableCopy];
为了创建数组的可变副本。
答案 4 :(得分:0)
确保您的数组必须是可变的。尝试像这样分配你的数组
NSMutableArray *arrData = [[NSMutableArray alloc] init];
将您的响应对象分配给您的arrData
NSMutableArray *arrData = [responseDictionary objectForKey:@"data"];
然后执行以下操作,并避免在变量名称的开头使用新关键字。
NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"2016-01-22" forKey:@"date"];
[arrData addObject:dict];
答案 5 :(得分:0)
您正在为NSMutableArray对象分配NSDictionary对象引用。
arrData =[data objectForKey:@"data"];
然后,当您尝试在arrData上执行 addObject 方法时,它会崩溃,因为NSDictionary对象不存在addObject方法。
使用:
[arrData addObject:[data objectForKey:@"data"]]