使用if语句的结果作为变量

时间:2013-09-03 17:43:02

标签: ios objective-c uiimageview

我想知道是否有一种方法可以使用方法的返回值,由if语句检查,作为变量 如果不是

我希望下面的代码示例有助于解释我的目标。

假设我有一个返回UIImageView-(UIImageView *)imageViewExistsForID:(NSString *)viewID的方法。在其他地方的方法中,我想检查imageView是否返回一个值,并且因为它是有条件的,所以使用if语句,如下所示:

if ([self imageViewExistsForID:<VIEWID>]) {

// Use the returned imageView here

}
else {

// 'nil' was returned, so no need to use the result

}

通常,我会在if语句之前声明一个占位符变量,例如:

UIImageView *returnedImageView = [self imageViewExistsForID:<VIEWID>];

if (returnedImageView) {
...etc

我只是想知道是否有一种方法可以在if语句首次检查时从方法中传递结果,而不必先将结果存储在变量中,这更类似于:

if ([self imageViewExistsForID:<VIEWID>]) {

    UIImageView *imageView = if-statement-result 
    // ??? (i.e. don't call the method again [self imageViewExistsForID:<VIEWID>])

}

免责声明:我纯粹是从理智的角度来问这个问题,因为这显然不是阻止我在代码中实现任何目标的“问题”。我总是热衷于了解有关Objective-C的更多信息,因为我认为自己还没有充分阅读。感谢任何能让我知道这一点的人 - 如果我不可理解就道歉!

2 个答案:

答案 0 :(得分:3)

不,没有办法使用if条件的结果。您必须声明占位符变量。

if语句中初始化占位符是可能的,在某些情况下甚至是允许的

UIImageView *returnedImageView;

if ((returnedImageView = [self imageViewExistsForID:<VIEWID>])) {

注意额外的括号;使用=而不是==是一个常见错误,因此编译器可能会发出警告而不将括号括在括号中。

答案 1 :(得分:2)

只是为了补充@Kevin的答案,有一种情况可能与你所描述的内容有关:

myVar = foo ?: bar

相当于:

if (foo) {
   myVar = foo;
} else {
   myVar = bar;
}

在不添加太多华夫饼干的情况下替换nil的默认值可能是一种很好的方式。