【问题标题】:Assign optional return value to variable为变量分配可选的返回值
【发布时间】:2016-04-24 21:07:13
【问题描述】:

我有一个可以返回 nil 的方法。如果它不返回 nil,它应该替换一个局部变量:

NSString *errorMsg = error.localizedDescription;
if([self errorMsgFromErrorCode:error.code]) {
    errorMsg = [self errorMsgFomErrorCode:error.code];
}

有没有更聪明、更紧凑的方法来做到这一点,而不必两次调用这个辅助方法?

【问题讨论】:

    标签: ios objective-c


    【解决方案1】:

    errorMsg = [self errorMsgFromErrorCode:error.code] ?: error.localizedDescription;

    【讨论】:

    【解决方案2】:

    你可以使用条件运算符:

    NSString *errormessage = [self errorMsgFromErrorCode:error.code] ? [self errorMsgFromErrorCode:error.code] : error.localizedDescription;
    

    最短的形式是 nil 合并运算符 (??) 例如

    var perhapsInt: Int?
    let definiteInt = perhapsInt ?? 2
    print(definiteInt) // prints 2 
    perhapsInt = 3
    let anotherInt = perhapsInt ?? 4
    print(anotherInt) // prints 3
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多