2012-05-24 4 views
0

С объектами, я могу написать аксессор вернуть nil если объект не является действительным:Возврат ноля для STRUCT аксессора

- (Weather *)howsTheWeather 
{ 
    if (![WeatherNetwork isAvailable]) { 
     return nil; 
    } 
    Weather *weatherNow = [WeatherNetwork getWeather]; 
    return weatherNow; 
} 

Я хотел бы сделать это с CLLocationCoordinate2D, struct для проведения широту и долготу. Я попытался это:

- (CLLocationCoordinate2D)coordinate 
{ 
    CLLocationCoordinate2D coord = CLLocationCoordinate2DMake(self.latitude, self.longitude); 
    if (!CLLocationCoordinate2DIsValid(coord)) { 
     return nil; 
    } 
    return coord; 
} 

Но компилятор жалуется «Возвращение„недействительным *“из функции с несовместимого типа результата" CLLocationCoordinate2D»

Какой самый лучший способ справиться с такой ситуацией? Я подумывал написать отдельный метод -(BOOL)isLocationValid:(CLLocationCoordinate2D)coordinate. Есть ли лучший способ справиться с этим?

ответ

1

Структура не может быть нулевой. Вам нужно будет перейти с опцией 2 (проверяя правильность структуры на основе содержащихся в ней данных). В качестве альтернативы вы можете обернуть свою структуру в псевдообъект, который is способен быть нильшим, но это, похоже, много работает для побочной выгоды.