Obj-c - сортировка массивов в словаре? - PullRequest
0 голосов
/ 15 мая 2019

У меня есть массив словарей (self.filteredData), и я пытаюсь отсортировать словари так, чтобы словари, в которых ключ содержит значение YES, помещались вверху моего табличного представления:

 NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"ambassador"
                                                                     ascending:NO];
        NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
        NSArray *sortedArray = [self.filteredData sortedArrayUsingDescriptors:sortDescriptors];

        NSLog(@"THE SORTED VERSION %@", sortedArray);


        NSString *first = [sortedArray valueForKey:@"first name"];
        NSString *last = [sortedArray valueForKey:@"last name"];
        NSString *area = [sortedArray valueForKey:@"neighbourhood"];
        NSString *city = [sortedArray valueForKey:@"city"];

Это работает, однако теперь я не могу получить данные из каждого массива?Эта строка:

 NSString *first = [sortedArray valueForKey:@"first name"];

Просто возвращает скобку (.

При этом sortedArray заполняется после отладки и возвращается в правильном порядке сортировки (данные выше идут в таблицу)..

Как должна выглядеть эта строка, чтобы правильно получить данные массива?

1 Ответ

0 голосов
/ 15 мая 2019

Вы пытаетесь получить доступ к свойству массива, а не к определенному индексу, попробуйте это:

[sortedArray[0] valueForKey:@"first name"];

Где 0 - это индекс, к которому вы хотите получить доступ, в данном случае первый элемент.

Поскольку это будет в TableView, вы можете получить доступ к элементам на основе их индексов:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    NSString *name = [this.sortedArray[indexPath.row] valueForKey:@"first name"];
    // render cell below
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...