2

ソート記述子に問題があります。サッカークラブのランキングを取得しています。これが、私の 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サービスの位置が文字列であることだと思います。そして、私のソート記述子はそれを文字列として見ています。しかし実際には、それを整数として見る必要があります。誰も私がこれを行う方法を知っていますか?

前もって感謝します。

4

1 に答える 1

4

「位置」が Web サービスから文字列として提供される場合でも、コア データ モデルに数値 (「Integer 32」など) として格納するのが最善の解決策です。オブジェクトの対応するプロパティは になりNSNumber、正しくソートされます。

本当にこの方法で行けない場合は、回避策localizedStandardCompareとして比較関数として使用してみてください。数値を含む文字列を数値に従ってソートすると思います。

[NSSortDescriptor sortDescriptorWithKey:@"position" ascending:YES
    selector:@selector(localizedStandardCompare:)]
于 2012-10-08T13:55:35.390 に答える