我想实现这个
if let large = imageLinks.large {
if !large.isEmpty {
result = large
}
}
在单个if语句中,类似这样(这不会编译)
if let large = imageLinks.large where !large.isEmpty {
result = large
}
有可能吗?
答案 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
}
无论如何它并不那么漂亮:(