我正在向另一个NSMutableArray添加一个NSMutableArray,问题是第一个数组中的所有对象都是相同的(长度大小的内容等)。我猜测当你向一个数组添加一个数组时,第一个数组simple保存一个指向第二个数组的指针,那么如何让它保存一个唯一的数组呢?我想我在添加时需要使用arrayWithArray,但我无法弄清楚语法。
我的NSDictionary包含许多对象,每个对象都有一堆图像URL,然后下载。
到目前为止我的代码;
for (NSDictionary *obj in MyDictList)
{
[tempImageArray removeAllObjects];
for(NSString *tempImageURL in obj[@"images"])
{
tempImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:tempImageURL]]];
NSLog(@"Download Extra Image : %@, %i", tempImageURL, [UIImagePNGRepresentation(tempImage) length]);
[tempImageArray addObject:tempImage];
}
NSLog(@"Number of pics fo this event : %i", [tempImageArray count]);
// Add the array of images to the array
[eventImages addObject:tempImageArray];
}
通过此日志记录(如您所见,可以看到每个图像的URL和大小)。
Download Extra Image : http://.....A...Correct...URL/file.jpg, 69516
Download Extra Image : http://.....A...Correct...URL/file.jpg, 63263
Number of pics fo this event : 2
Download Extra Image : http://.....A...Correct...URL/file.jpg, 69516
Download Extra Image : http://.....A...Correct...URL/file.jpg, 64545
Number of pics fo this event : 2
Download Extra Image : http://.....A...Correct...URL/file.jpg, 56541
Download Extra Image : http://.....A...Correct...URL/file.jpg, 69144
Download Extra Image : http://.....A...Correct...URL/file.jpg, 51585
Number of pics fo this event : 3
Download Extra Image : http://.....A...Correct...URL/file.jpg, 56813
Download Extra Image : http://.....A...Correct...URL/file.jpg, 33869
Number of pics fo this event : 2
当我循环浏览它们时,我得到最后一个数组的4个副本(即只有2个照片)。
Number of image in this Event at Row : 2, 0
Number of image in this Event at Row : 2, 1
Number of image in this Event at Row : 2, 2
Number of image in this Event at Row : 2, 3
EDIT 感谢您的帮助,向正确的方向轻推,并将最后一行改为阅读;
[eventImages addObject:[NSArray arrayWithArray:tempImageArray]];
答案 0 :(得分:4)
问题在于你不应该使用removeAllObjects
,因为它只是清除数组(删除你刚刚完成的工作)。相反,您应该创建一个新数组(tempImageArray = [NSMutableArray array];
)。
答案 1 :(得分:0)
所以你想把它们结合起来?你可以这样做:
NSMutableArray *m1 = [[NSMutableArray alloc] initWithObjects:@"1", @"2", nil];
NSMutableArray *m2 = [[NSMutableArray alloc] initWithObjects:@"3", @"4", nil];
for (id obj in m2)
[m1 addObject:obj];
(不确定这是不是你的问题)