OBJ-C-在字典中对数组进行排序?

时间:2019-05-14 23:09:53

标签: ios objective-c

我有一个字典数组(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 :(得分:0)

您正在尝试访问数组的属性,而不是特定的索引,请尝试以下操作:

[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
}