Вы пытаетесь отсортировать массив ... за исключением того факта, что ваш массив не массив, а NSDictionary.
Ваш код на данный момент не самый лучший.Вы неправильно понимаете словари и, возможно, путаете их с массивами, поэтому я думаю, что вы совсем новичок в программировании на target-c.
У вас есть два списка вещей, если я не ошибаюсь.Первый список представляет собой список имен, а второй список представляет собой изображение, соответствующее этому имени.
Ниже я собираюсь сделать две вещи:
- Во-первых, я даю вам два способа решения вашей проблемы.Он содержит пример кода и дает вам небольшое объяснение.Существует возможность, что вы не понимаете части того, что я описываю.В этом случае вам следует:
- Проверить ссылку, которую я описал ниже, на два решения.В нем есть учебник, который поможет вам понять все о массивах, словарях, таблицах и, в качестве бонуса, разборе XML.
Так что, на мой взгляд, вы можете сделать две вещи:
Первый использует массив NSDictionaries.Вы будете использовать код, который выглядит следующим образом:
NSMutableDictionary *itemOne = [[NSMutableDictionary alloc] init];
NSMutableDictionary *itemTwo = [[NSMutableDictionary alloc] init];
NSMutableArray *listOfAll = [[NSmutableArray alloc] init];
NSString *itemOneName = [[NSString alloc] initWithFormat:@"This is picture 1"];
NSString *itemTwoName = [[NSString alloc] initWithFormat:@"This is picture 2"];
NSData *imageOneData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic1.jpg"]];
NSData *imageTwoData = [[NSData alloc] initWithContentsOfURL: [NSURL URLWithString: @"http://myurl/mypic2.jpg"]];
UIImage *itemOneImage = [UIImage imageWithData: imageOneData];
UIImage *itemTwoImage = [UIImage imageWithData: imageTwoData];
[itemOne setObject:itemOneNameString forKey:@"Name"];
[itemOne setObject:itemOneImage forKey:@"Image"];
[itemTwo setObject:itemTwoNameString forKey:@"Name"];
[itemTwo setObject:itemTwoImage forKey:@"Image"];
[listOfAll addObject:itemOne];
[listOfAll addObject:itemTwo];
Все может быть заполнено с использованием этого массива.Просто используйте что-то с циклом for для перебора вашего массива.
for (int i = 0; i < [listOfAll count]; i++)
{
NSMutableDictionary *currentItem = [[NSMutableDictionary alloc] initWithDictionary:[listOfAll objectAtIndex:i]];
//Do something with that current item
}
Вы также можете использовать этот индекс в вашем tableView.В этом случае вы должны использовать переменную section
вместо i
, чтобы получить желаемый индекс.
Второй использует два массива.Представьте, что вы получили изображение с именем
imageOne
с текстом
imageName
.Затем вы должны использовать:
NSMutableArray *nameList = [[NSMutableArray alloc] init];
[nameList addObject: imageName];
NSMutableArray *imageList = [[NSMutableArray alloc] init];
[imageList addObject: imageOne];
Если вы хотите использовать определенный элемент из этих списков, вам просто нужно использовать тот же индексный номер.Например:
[theTitleLabel setText:[[NSString alloc] initWithFormat:@"%@", [nameList objectAtIndex:x]]];
[theImageView setImage:[imageList objectAtIndex:x]];
Убедитесь, что х совпадают.
Я понимаю, что это много информации, особенно если вы новичок в Objective - C. Существует учебник, который дает вам много информации о том, как использовать массивы, словари и представления таблиц.В качестве бонуса вы немного узнаете о синтаксическом анализе XML. Я предлагаю вам пройтись по этому учебному пособию, сделать все и прочитать все, что в нем говорится.Это должно дать вам хорошее начало в мире программирования на iPhone.
Удачи!