2012-04-05 8 views
0

Ich habe eine Anwendung erstellt, die Daten vom aktuellen Standort des Benutzers zeigt. Ich möchte sie in bestätigender Reihenfolge auf der Grundlage der minimalen Entfernung des Benutzers sortieren. Ich weiß, dass ich diese Art von Funktion verwenden müssen:Wie neu TableView neu anordnen, nachdem ich min Standort vom aktuellen Standort in iPhone SDK bekommen?

[userLocationd istanceFromLocation:cameraLocation];

Aber, was soll ich tun, nachdem das? Ich sollte alle nach Entfernung sortieren und sie in ein Array setzen, aber wie ordne ich jede Zelle dann entsprechend der minimalen Position des Benutzers an? (cellForRowAtIndexPath)

Auch; Ich habe wirklich nicht herausgefunden, wie man den Standort des Benutzers findet. Ich bin dabei, aber es wäre hilfreich, wenn mich jemand in die richtige Richtung weist.

Wie sortiere ich das Array auf den minimalen Abstand zum maximalen Standort?

Ich habe diesen Code verwendet.

CLLocation *location1 = [[[CLLocation alloc] initWithLatitude:someLatitude longitude:someLongitude] autorelease]; 

    CLLocation *location2 = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude]; 

    float target = [location2 distanceFromLocation:location1]; 
    target = target/1000; 

Vielen Dank im Voraus!

Antwort

0

Ich habe die Lösung diesen Code verwenden es funktioniert perfekt

uint smallest[5]; 

    NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:[NSNumber numberWithDouble:0.5], [NSNumber numberWithDouble:0.25], [NSNumber numberWithDouble:1], [NSNumber numberWithDouble:0.75], [NSNumber numberWithDouble:0.15], [NSNumber numberWithDouble:0.85], [NSNumber numberWithDouble:0.95], [NSNumber numberWithDouble:0.32], [NSNumber numberWithDouble:0.21], [NSNumber numberWithDouble:0.05], nil]; 

    // declare flags 
    uint flags[array.count]; 

    // initialize flags 
    for(uint i = 0; i < [array count]; i++) 
     flags[i] = 0; 

    for(int i = 0; i < 5; i++) 
    { 
     smallest[i] = -1; 
     for(int j = 0; j < [array count]; j++) 
     { 
      // check flag 
      if(!flags[j]) 
      { 
       if(smallest[i] == -1 || 
        [[array objectAtIndex:smallest[i]] doubleValue] > [[array objectAtIndex:j] doubleValue]) 
       { 
        // reset flag for previous index 
        if(smallest[i] != -1) 
         flags[smallest[i]] = 0; 
        // set flag for current index 
        flags[j] = 1; 
        smallest[i] = j; 
       } 
      } 
     } 
    } 

    for(uint i = 0; i < 5; i++) 
     NSLog(@"Smallest[%u]: %u -> %f", i, smallest[i], [[array objectAtIndex:smallest[i]] doubleValue]); 

wenn jemand irgendein Problem haben, als Sie eine Verknüpfung zu dieser Frage an ursprünglichen Entwickler MatthewD

gewidmet gefunden
0

Sortieren Sie das Array, das Sie in Ihrem Modell haben, so, dass es sich in der gewünschten Entfernungsreihenfolge befindet, und rufen Sie dann ein Reload für die Tabellenansicht auf. Das wird dann vom Datenmodell aktualisiert und Ihre Liste wird in der richtigen Reihenfolge angezeigt.