Iphone 对UITableView结果进行排序
这是我的设置。我有一个名为RadioStations的对象,其中有几个字符串,如callsign、frequency和一个名为amStationInfo的NSMutableArray。在我的viewcontroller上,我访问一个SQLite数据库,该数据库填充数组,如下所示 无线电广播Iphone 对UITableView结果进行排序,iphone,objective-c,xcode,Iphone,Objective C,Xcode,这是我的设置。我有一个名为RadioStations的对象,其中有几个字符串,如callsign、frequency和一个名为amStationInfo的NSMutableArray。在我的viewcontroller上,我访问一个SQLite数据库,该数据库填充数组,如下所示 无线电广播 @interface RadioStations : NSObject { NSString *format; NSString *city; } @property (nonatomic
@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
3) 圣何塞-10.0
4) 圣何塞-2.0
5) 圣何塞-4.0
格式(数字)
1) 圣何塞-2.0
2)旧金山- 3
3) 圣何塞-4.0
4) 洛杉矶-5.0
5) 圣何塞-10.0
两者(城市格式)
1) 洛杉矶-5.0
2)旧金山- 3
3) 圣何塞-2.0
4) 圣何塞-4.0
5) 圣何塞-10
我有一个方法来排序的格式像这样。。。在无线电广播中
- (NSComparisonResult)sortByFormat:(id)anObject
{
if (self.format < anObject.format) {
return NSOrderedAscending;
} else if (self.format > anObject.format) {
return NSOrderedDescending;
}
return NSOrderedSame;
}
-(NSComparisonResult)排序格式:(id)一个对象
{
if(self.formatanObject.format){
退而求其次;
}
返回指定名称;
}
但是我在类型为“\u strong id”的对象上找不到一个“属性”format,它突出显示了一个对象。format为什么你不传递一个无线电台而不是id?也许我遗漏了一些东西,但我想这就是你需要做的一切
- (NSComparisonResult)sortByFormat:(RadioStation *)anObject
{
if (self.format < anObject.format) {
return NSOrderedAscending;
} else if (self.format > anObject.format) {
return NSOrderedDescending;
}
return NSOrderedSame;
-(NSComparisonResult)排序格式:(RadioStation*)一个对象
{
if(self.formatanObject.format){
退而求其次;
}
返回指定名称;
}这是可行的,但是现在当我调用它时,我得到了这样一个结果:当我调用amStationInfo=[amStationInfo SorterDarrayUsingSelector:@selector(sortByFormat:)]时,不兼容的类型分配给了'NSMutableArray*.\u strong从'NSArray*'中选择;尝试amStationInfo=[[NSMutableArray alloc]initWithArray[amStationInfo SorterDarrayUsingSelector:@selector](sortByFormat:)]];(或者类似的东西-我的语法可能在这一个上不正确)