web-dev-qa-db-fra.com

Comment vérifier que CLLocationCoordinate2D n'est pas vide?

Comment vérifier que CLLocationCoordinate2D n'est pas vide?

56
Shmidt

Un sujet très ancien, mais j'en avais besoin maintenant et j'ai résolu mon problème avec l'aide de Klaas Hermanns, avec un changement minime.

Au lieu de

if( myCoordinate ==  kCLLocationCoordinate2DInvalid ) {
  NSLog(@"Coordinate invalid");
}

Je devais utiliser

if (CLLocationCoordinate2DIsValid(myCoordinate)) {
  NSLog(@"Coordinate valid");
} else {
  NSLog(@"Coordinate invalid");
}

Peut-être que cela aidera quelqu'un d'autre :)

Modifier:

Comme indiqué, l'initialisation, telle que décrite dans Klaas, est toujours nécessaire.

132
Rick van der Linde

Vous pouvez utiliser la constante kCLLocationCoordinate2DInvalid déclarée dans CLLocation.h.

Initialisez votre variable avec

CLLocationCoordinate2D myCoordinate = kCLLocationCoordinate2DInvalid;

et plus tard, le vérifier avec:

if( myCoordinate ==  kCLLocationCoordinate2DInvalid ) {
  NSLog(@"Coordinate invalid");
}

Une addition:

Parfois, cela semble être une solution encore meilleure (comme l'a mentionné Rick van der Linde dans une autre réponse):

if (CLLocationCoordinate2DIsValid(myCoordinate)) {
    NSLog(@"Coordinate valid");
} else {
    NSLog(@"Coordinate invalid");
}

Ajout pour Swift:

Vous pouvez faire de même dans Swift, comme indiqué ici:

let myCoordinate = kCLLocationCoordinate2DInvalid

if CLLocationCoordinate2DIsValid(myCoordinate) {
    println("Coordinate valid")
} else {
    println("Coordinate invalid")
}
56
Klaas
if ( coordinate.latitude != 0 && coordinate.longitude != 0 )
{
    ....
}
9
joerick
func isCoordinateValid(latitude: CLLocationDegrees, longitude: CLLocationDegrees) -> Bool {
    guard latitude != 0, longitude != 0, CLLocationCoordinate2DIsValid(CLLocationCoordinate2D(latitude: latitude, longitude: longitude)) else {
        return false
    }
    return true
}
0
jawad