0

所以这是我的设置。我有一个名为 RadioStations 的对象,其中有几个字符串,如呼号、声明的频率和一个名为 amStationInfo 的 NSMutableArray。在我的视图控制器上,我访问了一个 SQLite 数据库,该数据库像这样填充数组......

RadioStations.h

@interface RadioStations : NSObject {

    NSString *format;
    NSString *city;
}

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

视图控制器.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) 圣何塞 - 2.0 2) 旧金山 - 3.0 3) 圣何塞 - 4.0 4) 洛杉矶 - 5.0 5) 圣何塞 - 10.0

两者(城市然后格式) 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

为什么不传入 RadioStation 而不是 id?也许我错过了一些东西,但我认为这就是你需要做的一切......

    - (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 回答