Итак, я немного поиграл с программированием на iOS. У меня мало времени, но я откладываю, чтобы узнать это слишком долго. Но я застрял в течение 2 дней с этой проблемой. Я получаю следующую ошибку, когда я пытаюсь добавить ячейки в свой CollectionView.iOS CollectionView 'NSInternalInconsistencyException'
'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
Спасибо продвижение, Lucas
UPDATE
Итак, аф несколько несколько ОЧЕНЬ полезных советов, я получил еще одно сообщение об ошибке: «NSInternalInconsistencyException», причина: «Неверное обновление: недопустимое количество элементов в разделе 0. Количество элементов, содержащихся в существующем разделе после обновления (1), должно быть равным к числу элементов, содержащихся в этом разделе перед обновлением (1), плюс или минус количество элементов, вставленных или удаленных из этого раздела (1 вставлено, 0 удалено) и плюс или минус количество элементов, перемещенных в или из этого раздел (0 перемещен, 0 перемещен). '
Как я уже сказал ниже, я мог бы использовать (NSInteger) collectionView: (UICollectionView *) collectionView numberOfItemsInSection: (NSInteger) раздел неправильно, потому что он вызывается дважды подряд, не давая времени для значения folderContent.count для изменение.
Вы уверены, что 'self.fileList.dataSource' установлен в' self'? Поместите точки останова в 'createFileList:' и 'collectionView: numberOfItemsInSection:'. Убедитесь, что на обеих точках останова 'self' и' folderContent' установлены одинаковые (не-nil) значения. –
Я исправил то, что Шон сказал не так, а также исправил некоторые проблемы с привязкой, и теперь ошибка изменилась. Итак, я отлаживал приложение. collectionView: numberOfItemsInSection вызывается дважды, и оба раза возвращаемое значение (folderContent.count) равно 1, что приводит к сбою приложения. Я думаю, что я, возможно, не получаю правильный путь к стеку приложений ... –