2012-04-24 211 views
0

这是我的设置。我有一个名为RadioStations的对象,其中有几个字符串,如呼号,声明频率和名为amStationInfo的NSMutableArray。在我的ViewController,我访问的填充像这样的数组中的SQLite数据库...排序UITableView结果

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; 

我希望能够根据city(al数字)或格式(数字)和城市,然后格式。我知道格式是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

回答

2

你怎么不顺带一个RadioStation而不是一个ID?也许我失去了一些东西,但我认为这是所有你需要做的......

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

}

+0

这工作,但现在当我打电话吧,我得到这样的:不兼容的类型分配给“的NSMutableArray *当我调用amStationInfo时['NSArray *'] _strong = [amStationInfo sortedArrayUsingSelector:@selector(sortByFormat :)]; – StarvingPilot 2012-04-24 22:40:10

+0

try amStationInfo = [[[[NSMutableArray alloc] initWithArray [amStationInfo sortedArrayUsingSelector:@selector(sortByFormat :)]]; (或类似的东西 - 我的语法可能是关闭的) – 2012-04-24 23:27:34