Я создал plist, который содержит структуру NSDictionary. Ключ - это метка (которую я использую для заполнения tableview cell.text), а значение - это имя файла, которое я хочу использовать для «динамического» заполнения cell.image. Точные имена файлов png загружаются в проект.
Чтобы упростить ситуацию (как я думал), я загружаю plist в NSDictionary, а затем разделяю его на два массива (используя allKeys и allValues).
Пытаясь установить изображение ячейки, я не понимаю, почему это работает:
cell.image = [UIImage imageNamed:@"bad.png"];
а это не так (в симуляторе - у меня происходит сбой приложения и перебор в отладчике):
cell.image = [UIImage imageNamed:[rowImageList objectAtIndex:indexPath.row]];
Я могу поместить эту следующую строку прямо перед вторым фрагментом кода, и она прекрасно работает, поэтому кажется, что я получаю NSString из objectAtIndex:
NSLog(@"Image name: %@", [rowImageList objectAtIndex:indexPath.row]);
Я также пытался создать временную NSString и присвоить ей [rowImageList objectAtIndex:], а затем использовать эту NSString для предоставления imageNamed:.
Вот некоторая информация от отладчика:
- [Длина NSCFArray]: нераспознанный селектор отправлен в экземпляр 0x262d910
Завершение работы приложения из-за отсутствия связи
исключение
NSInvalidArgumentException, причина:
'*** - [длина NSCFArray]: не распознан
селектор отправлен на экземпляр 0x262d910 '
Дайте мне знать, если вам нужна дополнительная информация / код.
Редактировать: вот как я заполняю rowImageList:
NSArray *myRowImages = [[NSArray alloc] init];
myRowImages = [searchFilterList allValues];
self.rowImageList = [myRowImages copy];
[myRowImages release];
//where searchFilterList is an NSDictionary that I loaded from a plist
Вот скриншот моего plist:
[IMG] [] 1
[/ IMG] * +1032 *
Редактировать: пересмотренный список rowImageList:
NSMutableArray *myRowImages = [[NSMutableArray alloc] init];
NSEnumerator *enumerator = [searchFilterList objectEnumerator];
id object;
while ((object = [enumerator nextObject])) {
[myRowImages addObject:[object objectAtIndex:0]];
}
self.rowImageList = myRowImages; //edit: added self. prefix
[myRowImages release];