2012-10-08 34 views
1

我的排序描述符有問題。我正在獲取一個足球俱樂部的排名。這就是我的web服務如何提供數據。使用獲取的請求排序描述符

"ranking": [ 

    { 
     "type": "competitie", 
     "position": "1", 
     "name": "Club Brugge", 
     "gamesPlayed": "10", 
     "gamesWon": "6", 
     "gamesTied": "4", 
     "gamesLost": "0", 
     "goalsPos": "25", 
     "goalsNeg": "12", 
     "goalsDiff": 13, 
     "points": "22" 
    } 

這是我的提取請求。

- (void)getKlassement // attaches an NSFetchRequest to this UITableViewController 
{ 
    NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Klassement"]; 
    request.sortDescriptors = [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES]]; 

    self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request 
                     managedObjectContext:self.genkDatabase.managedObjectContext 
                      sectionNameKeyPath:nil 
                        cacheName:nil]; 

} 

現在的排名如下。 1,11,12,13,14,2,3,4,5 ... 我認爲問題是這個位置是我的web服務中的字符串。而我的排序描述符將其視爲一個字符串。但實際上它應該把它看作一個整數。有誰知道我能做到這一點嗎?

在此先感謝。

回答

3

即使「位置」是從Web服務中以字符串形式提供的,最好的解決方案是將其存儲爲核心數據模型中的數字(「整型32」或類似字符)。該對象的相應屬性將爲NSNumber並且它將被正確排序。

如果您確實不能這樣做,您可以將作爲解決方法嘗試使用localizedStandardCompare作爲比較函數。我認爲這是根據數字值對包含數字的字符串進行排序。

[NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES 
    selector:@selector(localizedStandardCompare:)] 
+0

這對我有效!非常感謝 ! – Steaphann