的我需要存儲串每個字符串我需要存儲布爾值我在TableView中的項目和的名單..我會用一個NSDictionary但我怎麼能排序字符串列表按字母順序(使用選擇器)和排序在同一時間的布爾值?Objective-C的最佳數據結構排序字符串和布爾
我知道,像存在或sortUsingSelector方法UsingComparator,但在NSDictionary的我只能排序鍵的值所以我需要反向..
誰能幫助我,也許使用其他數據結構 ?
的我需要存儲串每個字符串我需要存儲布爾值我在TableView中的項目和的名單..我會用一個NSDictionary但我怎麼能排序字符串列表按字母順序(使用選擇器)和排序在同一時間的布爾值?Objective-C的最佳數據結構排序字符串和布爾
我知道,像存在或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;
}
如果對鍵進行排序,則值會固有排序,因爲您使用鍵來訪問值。 – Wain
爲什麼不製作字典數組?每個字典都包含一個字符串和一個布爾值。然後,您可以使用字符串對數組進行排序;) – HAS
我找到了解決方法,有一些技巧,並且四處走動......非常感謝您的回答,您已經幫助我做到了這一點 – Shafa95