2012-04-24 129 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