展开字符串并在同一if语句中检查空白

时间:2015-03-20 10:44:16

标签: swift

我想实现这个

if let large = imageLinks.large {

    if !large.isEmpty {

        result = large
    }
}

在单个if语句中,类似这样(这不会编译)

if let large = imageLinks.large where !large.isEmpty {

    result = large       
}

有可能吗?

3 个答案:

答案 0 :(得分:6)

目前还不可能。 使用swift的实际版本,if let语句非常差。

但是 Swift 1.2 (它将在Xcode 6.3中提供)。 你将能够做到这一点:

(SWIFT 1.2)

if let large = imageLinks.large where !large.isEmpty {

    result = large       
}

但现在你做不到。 你可以这样做:

if  imageLinks.large != nil && !imageLinks.large!.isEmpty {
   result = large!;
}

注意: 快速使用"懒惰评估" 如果第一部分imageLinks.large != nil为假,则不会评估第二部分,因此不会崩溃。

但是我没有发现这个解决方案很漂亮(用力展开太多力量)。

答案 1 :(得分:2)

在Swift 4.4中,用于救援的通用类\ o /

public extension Optional where Wrapped == String {
  var isEmptyOrNil: Bool { return (self ?? "").isEmpty }
}

用法

if nameField.text.isEmptyOrNil {
    //doSomething...
}

答案 2 :(得分:1)

在Swift 1.1中

如果你不喜欢强行打开,你可以:

if let large = imageLinks.large?.isEmpty == false ? imageLinks.large : nil {
    result = large
}

无论如何它并不那么漂亮:(