我需要将我的项目的字符串列表存储在 TableView 中,并且对于每个字符串我需要存储一个Bool 值.. 我会使用NSDictionary但如何按字母顺序对字符串列表进行排序(使用选择器)并在同时布尔值?
我知道存在诸如 sortUsingSelector 或 UsingComparator 之类的方法,但是在 NSDictionary 中我只能按值对键进行排序,所以我需要相反的..
谁能帮助我,也许使用另一个数据结构?
我需要将我的项目的字符串列表存储在 TableView 中,并且对于每个字符串我需要存储一个Bool 值.. 我会使用NSDictionary但如何按字母顺序对字符串列表进行排序(使用选择器)并在同时布尔值?
我知道存在诸如 sortUsingSelector 或 UsingComparator 之类的方法,但是在 NSDictionary 中我只能按值对键进行排序,所以我需要相反的..
谁能帮助我,也许使用另一个数据结构?
我会推荐以下数据结构:
像这样使用 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;
}