Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 对UITableView结果进行排序_Iphone_Objective C_Xcode - Fatal编程技术网

Iphone 对UITableView结果进行排序

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

这是我的设置。我有一个名为RadioStations的对象,其中有几个字符串,如callsign、frequency和一个名为amStationInfo的NSMutableArray。在我的viewcontroller上,我访问一个SQLite数据库,该数据库填充数组,如下所示

无线电广播

@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:)]];(或者类似的东西-我的语法可能在这一个上不正确)