返回结构访问器的nil

时间:2012-05-24 11:09:55

标签: iphone objective-c cocoa-touch struct

对于对象,如果对象无效,我可以编写一个访问者来返回nil

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

我想用CLLocationCoordinate2Dstruct来保持纬度和经度。我试过这个:

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

但编译器抱怨“从具有不兼容结果类型'CLLocationCoordinate2D'的函数返回'void *'”

处理这种情况的最佳方法是什么?我在考虑编写一个单独的方法-(BOOL)isLocationValid:(CLLocationCoordinate2D)coordinate。有没有更好的方法来解决这个问题?

1 个答案:

答案 0 :(得分:1)

结构不能为空。您需要使用选项2(根据结果包含的数据检查结构的有效性)。或者,你可以将你的结构包装在 能够被禁止的伪对象中,但这似乎有很多虚假的好处。