2014-07-04 32 views
-2

經過實驗後,我意識到這段代碼只適用於64位iPhone,而不適用於其他版本。不在iPad上,不在我自己的設備上(iPhone 5),不在任何未指定爲64位的東西上。這是爲什麼?代碼適用於64位iPhone,但不適用於其他任何人......爲什麼不呢?

- (void)loadVenues { 
    NSString *latLon = @"30, -120"; 
    NSString *clientID = kCLIENTID; 
    NSString *clientSecret = kCLIENTSECRET; 


    NSDictionary *queryParams = @{@"ll" : latLon, 
            @"client_id" : clientID, 
            @"client_secret" : clientSecret, 
            @"categoryId" : @"4bf58dd8d48988d1e0931735", 
            @"v" : @"20140118"}; 

    [[RKObjectManager sharedManager] getObjectsAtPath:@"/v2/venues/search" 
              parameters:queryParams 
               success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) 
    { 
     _venues = mappingResult.array; 

     NSMutableArray *temp = [(NSArray*)_venues mutableCopy]; 
     Venue *holder; 
     for (int i = 0; i < _venues.count; i++) { 
      for (int j = 0; j < i; j++) { 
       if (((Venue *) [temp objectAtIndex:i]).location.distance < ((Venue *) [temp objectAtIndex:j]).location.distance) { 
        holder = [temp objectAtIndex:j]; 
        [temp replaceObjectAtIndex:j withObject:[temp objectAtIndex:i]]; 
        [temp replaceObjectAtIndex:i withObject:holder]; 
       } 
      } 
     } 

     _venues = temp; 
     [self.tableView reloadData]; 

    } failure:^(RKObjectRequestOperation *operation, NSError *error) { 
     NSLog(@"What do you mean by 'there is no coffee?': %@", error); 
    }]; 
} 
+0

到底什麼是不工作呢?一個例外,邏輯錯誤? – Oxcug

+0

你不要「排序算法」,你使用「排序算法」 – michaelsnowden

+0

@theMonster我沒有收到任何異常錯誤,它似乎沒有按照正確的順序加載數組。它似乎是隨機序列加載的。 – user3205630

回答

0

不是我認爲你的排序算法是雙層的,但你爲什麼不使用內置的排序算法來簡化你的代碼?

NSMutableArray *arrayToSort = (NSMutableArray *)mappingResult.array; 
[arrayToSort sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { 
    Venue *venue1 = obj1; 
    Venue *venue2 = obj2; 
    double value1 = venue1.location.distance; 
    double value2 = venue2.location.distance; 
    if (value1 > value2) 
     return NSOrderedAscending; 
    else if (value1 < value2) 
     return NSOrderedDescending; 
    else 
     return NSOrderedSame; 
}]; 
0

好吧,我想我知道問題是什麼。你說.distance的類型是NSNumber。所以你在做的是比較兩個對象。你想要的是比較兩個浮點值。所以,你應該修改你的if語句代碼這樣:

if (((Venue *) [temp objectAtIndex:i]).location.distance.floatValue < ((Venue *) [temp objectAtIndex:j]).location.distance.floatValue) 

我也建議你使用@ doctordoder的修訂

+0

中提取JSON數據後被定義好,謝謝!爲什麼32位iPhone手機不支持? – user3205630

+0

它被支持,我不知道爲什麼你認爲它不是。但是,如果這是正確的答案,那麼如果你接受它,這將是非常好的:)。 – Oxcug

相關問題