0

これが私のセットアップです。RadioStations というオブジェクトがあり、コールサイン、宣言された周波数、amStationInfo という名前の NSMutableArray などの複数の文字列があります。ビューコントローラーで、配列にデータを入力するSQLiteデータベースにアクセスします...

RadioStations.h

@interface RadioStations : NSObject {

    NSString *format;
    NSString *city;
}

@property (nonatomic, retain) NSString *format;
@property (nonatomic, retain) NSString *city;

ViewController.m

NSMutableArray* amStationInfo = [[NSMutableArray alloc] init];

    while (sqlite3_step(statement) == SQLITE_ROW)
    {
        NSString *cityField = [[NSString alloc] initWithUTF8String:
                               (const char *) sqlite3_column_text(statement, 10)];
        NSString *formatField = [[NSString alloc] initWithUTF8String:
                                (const char *) sqlite3_column_text(statement, 0)];
        RadioStations *amStationClass = [[RadioStations alloc] init];            
                [amStationClass setCity:cityField];
                [amStationClass setFormat:formatField];
                [amStationInfo addObject:amStationClass];
    }
[tabView reloadData];
sqlite3_finalize(statement);

そして、UITableViewにデータを入力します

NSString *cityValue = [(RadioStations *)[amStationInfo objectAtIndex:indexPath.row] city];
NSString *formatValue = [(RadioStations *)[amStationInfo objectAtIndex:indexPath.row] format];
cityLabel.text = cityValue;
formatLabel.text = formatValue;

都市 (アルファベット順) または形式 (数値) とその両方、都市、そして形式に基づいて UITable の結果を並べ替えられるようにしたいと考えています。私はフォーマットが NSString であることを知っています。すでに doubleValue を取得したとしましょう。みたいな結果を出したい……。

都市 (アルファベット順) 1) ロサンゼルス - 5.0 2) サンフランシスコ - 3.0 3) サンノゼ - 10.0 4) サンノゼ - 2.0 5) サンノゼ - 4.0

形式 (数値) 1) San Jose - 2.0 2) San Francisco - 3.0 3) San Jose - 4.0 4) Los Angeles - 5.0 5) San Jose - 10.0

両方 (city then format) 1) ロサンゼルス - 5.0 2) サンフランシスコ - 3.0 3) サンノゼ - 2.0 4) サンノゼ - 4.0 5) サンノゼ - 10

私はそのようにフォーマットをソートする方法を持っています... RadioStations.mで

- (NSComparisonResult)sortByFormat:(id)anObject
{
    if (self.format < anObject.format) {
        return NSOrderedAscending;
    } else if (self.format > anObject.format) {
        return NSOrderedDescending;
    }
    return NSOrderedSame;
}

しかし、タイプ「_strong id」のオブジェクトに「プロパティ「フォーマット」が見つかりません」が表示され、anObject.formatが強調表示されていました

4

1 に答える 1

2

IDの代わりにRadioStationを渡さないのはなぜですか?何かが足りないかもしれませんが、あなたがする必要があるのはそれだけだと思います...

    - (NSComparisonResult)sortByFormat:(RadioStation *)anObject
{
if (self.format < anObject.format) {
    return NSOrderedAscending;
} else if (self.format > anObject.format) {
    return NSOrderedDescending;
}
return NSOrderedSame;

}

于 2012-04-24T21:52:36.523 に答える