1

sortedArrayUsingDescriptors を使用して NSMutableArray をソートする方法の StefanB の回答の助けを借りて? 私はかなり理解して、自分のプロジェクトに NSSortDescriptors を実装しました。Facebook グラフから Facebook Places の名前、説明、ID、経度と経度を取得しました。次に、Facebook Places の現在地と緯度経度を使用して距離を計算しました。そして、これをすべて辞書の配列(placesDataArray)に保存しました。

問題は、この配列 (placesDataArray) を並べ替えようとすると、返される配列 (sortedArray) が null になることです。

 NSLog(@"PLACES DATA ARRAY ===== > %@", placesDataArray);

    NSSortDescriptor * distanceDescriptor = [[NSSortDescriptor alloc] initWithKey:DISTANCE
                                                                         ascending:YES];

    id obj;
    NSEnumerator * enumerator = [placesDataArray objectEnumerator];
    while ((obj = [enumerator nextObject]));

    NSArray * descriptors =
    [NSArray arrayWithObjects:distanceDescriptor, nil];
    NSArray * sortedArray =
    [placesDataArray sortedArrayUsingDescriptors:descriptors];

    NSLog(@"\nSorted =========================>");

    enumerator = [sortedArray objectEnumerator];
    while ((obj = [enumerator nextObject]));
    NSLog(@"SORTED ARRAY ===========> \n%@", obj);

そして私の結果は次のとおりです。

> 2013-01-10 18:50:40.439 Chat.Points[12091:c07] PLACES DATA ARRAY ===== > (
        {
        category = Hotel;
        distance = "0.109";
        name = "New York Marriott Marquis";
        placeImageString = 20372413613;
    },
        {
        category = Hotel;
        distance = "0.019";
        name = "DoubleTree Suites by Hilton New York City - Times Square";
        placeImageString = 85286252698;
    },
    .
    .
    .
    .
    .
        {
        category = "Local business";
        distance = "0.229";
        name = "Le Pain Quotidien";
        placeImageString = 153110388035573;
    },
        {
        category = "Local business";
        distance = "0.074";
        name = NYSC;
        placeImageString = 144712562228653;
    },
        {
        category = "Local business";
        distance = "0.193";
        name = "The W Hotel";
        placeImageString = 113613138695956;
    },
        {
        category = "Local business";
        distance = "0.015";
        name = "Palace Theatre - Pricilla Queen Of The Desert!";
        placeImageString = 130723233698153;
    },
        {


         category = Hotel;
            distance = "0.033";
            name = "Renaissance New York Times Square Hotel";
            placeImageString = 111789988858447;
        } ) 
2013-01-10 18:50:40.500 Chat.Points[12091:c07]  Sorted =========================> 
2013-01-10 18:50:44.993 Chat.Points[12091:c07] SORTED ARRAY ===========>  
(null)

上記のリンクにある質問を参照してください。その努力は高く評価されます。

4

2 に答える 2

3

「obj」の代わりに「sortedArray」を出力しました

違う -->

NSLog(@"SORTED ARRAY ===========> \n%@", obj);

正解 -->

NSLog(@"SORTED ARRAY ===========> \n%@", sortedArray);

https://stackoverflow.com/users/1187415/martin-rに感謝します

于 2013-01-11T14:51:29.630 に答える
2

配列を正しくソートしますが、最終出力に間違ったオブジェクトを出力します。

NSLog(@"SORTED ARRAY ===========> \n%@", obj);

する必要があります

NSLog(@"SORTED ARRAY ===========> \n%@", sortedArray);
于 2013-01-10T15:04:08.763 に答える