所以,我正在玩一些 iOS 编程。没有太多时间,但我已经推迟学习它太久了。但是我现在被这个可怕的问题困住了 2 天。当我尝试将单元格添加到我的 collectionView 时出现以下错误。
'NSInternalInconsistencyException', 原因:'尝试将第 0 项插入第 0 节,但更新后第 0 节中只有 0 项'
这是我的代码:
@interface DocumentsViewController() {
FileManager *fileManager;
NSMutableArray *folderContent;
}
@end
@implementation DocumentsViewController
@synthesize fileList;
- (void)viewDidLoad
{
[super viewDidLoad];
folderContent = [[NSMutableArray alloc] init];
fileManager = [[FileManager alloc] init];
NSArray *items = [fileManager getDirectoryInfo];
[self createFileList:items];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (void)createFileList:(NSArray *)items
{
for(NSString *item in items)
{
NSInteger count = [folderContent count];
NSIndexPath *indexPath = [NSIndexPath indexPathForRow:count inSection:0];
[folderContent insertObject:item atIndex:count];
[self.fileList insertItemsAtIndexPaths:@[indexPath]];
}
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
FilesViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"DefaultCell" forIndexPath:indexPath];
cell.image.image = [UIImage imageNamed:@"folder.png"];
cell.label.text = @"oi"; //objects[indexPath.row];
return cell;
}
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return folderContent.count;
}
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
@end
在此先感谢,卢卡斯
更新
好的,所以在一些非常有用的提示之后,我收到了另一条错误消息:'NSInternalInconsistencyException',原因:'无效更新:第 0 节中的项目数无效。更新后现有节中包含的项目数 (1) 必须等于更新前该节中包含的项目数 (1),加上或减去从该节插入或删除的项目数(1 插入,0 删除),加上或减去移入或移出的项目数该部分的(0 移入,0 移出)。
就像我在下面所说的那样,我可能正在使用 (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section 错误,因为它被连续调用了两次,而没有给 folderContent.count 的值更改时间。