これが私のセットアップです。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が強調表示されていました