2

我需要将我的项目的字符串列表存储在 TableView 中,并且对于每个字符串我需要存储一个Bool 值.. 我会使用NSDictionary但如何按字母顺序对字符串列表进行排序(使用选择器)并在同时布尔值?

我知道存在诸如 sortUsingSelector 或 UsingComparator 之类的方法,但是在 NSDictionary 中我只能按值对键进行排序,所以我需要相反的..

谁能帮助我,也许使用另一个数据结构

4

1 回答 1

1

我会推荐以下数据结构:

像这样使用 NSDictionaries 的 NSArray(使其成为属性):

self.array = @[@{@"String": @"Zusuuuuu", @"bool": @0}, // I am really not creative ;-) Just wanted an unsorted example
               @{@"String": @"YourContent", @"bool": @0},
               @{@"String": @"YourOtherContent", @"bool": @1}];

然后,您可以像这样对其进行排序:

self.array = [self.array sortedArrayUsingComparator:^NSComparisonResult(NSDictionary *aDictionary, NSDictionary *anotherDictionary) {
    return [aDictionary[@"String"] compare:anotherDictionary[@"String"]];
}];

如果要填充 UITableView 只需执行以下操作:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return self.array.count; //If you want them all in one section, easiest case
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    // ...
    // Do all the initialization of your cell
    // ...

    cell.yourLabel.text = self.array[indexPath.row][@"String"];
    cell.yourSwitch.on = ((NSNumber *)self.array[indexPath.row][@"bool"]).boolValue;
    return cell;
}
于 2013-07-31T09:16:27.883 回答