数组有 10 个 nil 对象?
array has 10 nil objects?
所以我有四种类型的数组,
@property NSMutableArray *snowImageArray;
@property NSMutableArray *dogImageArray;
@property NSMutableArray *catImageArray;
@property NSMutableArray *rabbitImageArray;
这些数组存储自定义对象,如标准 URL、用户名等。然后我创建了另一个名为
的数组
@property NSMutableArray *allImageArray;
我将四个对象数组存储在 allImageArray 中的位置。我想在集合视图中填充 allImageArray.. 到目前为止,我在 cellForItemAtIndexPath 方法中有这个...我像这样遍历数组..
NSArray *allImageArray = [self.allImageArray objectAtIndex:indexPath.row];
NSLog(@"%@",allImageArray);
for (NSMutableArray *searchDataImage in allImageArray) {
for (ImageHelper *imageHelper in searchDataImage) {
NSURL *url = [NSURL URLWithString:imageHelper.standardPhotoURL];
NSData *data = [[NSData alloc]initWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
cell.imageView.image = image;
}
}
现在由于某种原因,allImageArray 有 10 个对象,实际上它们中什么也没有,它打印 10 个具有@“0 个对象”的对象。我在 viewDidLoad 中实例化了我的 allImageArray。我还仔细检查了我的方法并确保我只对狗、雪、兔子和猫做了四次:
[self.rabbitImageArray addObject:imageHelper]; //adds the objects to the array
[self.allImageArray addObject:self.rabbitImageArray];
[self.tableView reloadData]
请告诉我我做错了什么? :/
尝试在添加对象之前初始化数组:
self.snowImageArray = [NSMutableArray new];
self.dogImageArray = [NSMutableArray new];
self.catImageArray = [NSMutableArray new];
self.rabbitImageArray = [NSMutableArray new];
self.allImageArray = [NSMutableArray new];
始终为数组分配内存。
self.snowImageArray = [[NSArray alloc]init];
或
self.snowImageArray = [NSMutableArray new];
所以所有的答案都有些正确,我已经为所有数组分配了内存。
我目前正在尝试在 table 视图单元格中显示每个数组,在 table 视图单元格中我有一个集合视图。我的代码的问题是其中一个我的 allImagesArray 中的数组是空的。所以我添加了
if (self.allImageArray.count == 4) {
[cell.collectionView reloadData];
}
到UITableViewCell:cellForRowAtIndexPath方法。这确保总共有 4 个数组。 none 个是空的。
所以我有四种类型的数组,
@property NSMutableArray *snowImageArray;
@property NSMutableArray *dogImageArray;
@property NSMutableArray *catImageArray;
@property NSMutableArray *rabbitImageArray;
这些数组存储自定义对象,如标准 URL、用户名等。然后我创建了另一个名为
的数组 @property NSMutableArray *allImageArray;
我将四个对象数组存储在 allImageArray 中的位置。我想在集合视图中填充 allImageArray.. 到目前为止,我在 cellForItemAtIndexPath 方法中有这个...我像这样遍历数组..
NSArray *allImageArray = [self.allImageArray objectAtIndex:indexPath.row];
NSLog(@"%@",allImageArray);
for (NSMutableArray *searchDataImage in allImageArray) {
for (ImageHelper *imageHelper in searchDataImage) {
NSURL *url = [NSURL URLWithString:imageHelper.standardPhotoURL];
NSData *data = [[NSData alloc]initWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
cell.imageView.image = image;
}
}
现在由于某种原因,allImageArray 有 10 个对象,实际上它们中什么也没有,它打印 10 个具有@“0 个对象”的对象。我在 viewDidLoad 中实例化了我的 allImageArray。我还仔细检查了我的方法并确保我只对狗、雪、兔子和猫做了四次:
[self.rabbitImageArray addObject:imageHelper]; //adds the objects to the array
[self.allImageArray addObject:self.rabbitImageArray];
[self.tableView reloadData]
请告诉我我做错了什么? :/
尝试在添加对象之前初始化数组:
self.snowImageArray = [NSMutableArray new];
self.dogImageArray = [NSMutableArray new];
self.catImageArray = [NSMutableArray new];
self.rabbitImageArray = [NSMutableArray new];
self.allImageArray = [NSMutableArray new];
始终为数组分配内存。
self.snowImageArray = [[NSArray alloc]init];
或
self.snowImageArray = [NSMutableArray new];
所以所有的答案都有些正确,我已经为所有数组分配了内存。
我目前正在尝试在 table 视图单元格中显示每个数组,在 table 视图单元格中我有一个集合视图。我的代码的问题是其中一个我的 allImagesArray 中的数组是空的。所以我添加了
if (self.allImageArray.count == 4) {
[cell.collectionView reloadData];
}
到UITableViewCell:cellForRowAtIndexPath方法。这确保总共有 4 个数组。 none 个是空的。