Comment vérifier que CLLocationCoordinate2D n'est pas vide?
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.
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")
}
if ( coordinate.latitude != 0 && coordinate.longitude != 0 )
{
....
}
func isCoordinateValid(latitude: CLLocationDegrees, longitude: CLLocationDegrees) -> Bool {
guard latitude != 0, longitude != 0, CLLocationCoordinate2DIsValid(CLLocationCoordinate2D(latitude: latitude, longitude: longitude)) else {
return false
}
return true
}