2

項目の文字列のリストをTableViewに格納する必要があり、文字列ごとにBool 値を格納する必要があります。ブール値と同時に?

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 に答える