首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift如果值为0,则改为默认值。

Swift如果值为0,则改为默认值。
EN

Stack Overflow用户
提问于 2017-07-01 17:00:26
回答 4查看 20.4K关注 0票数 9

我有一个代码部分:

代码语言:javascript
复制
let strValue = String()
textfield.stringValue = strValue!

问题是strValue可以是零。

为此,我检查如下:

代码语言:javascript
复制
if strValues.isEmpty() {
   textfield.stringValue = ""
} else {
   textfield.stringValue = strValue!
}

但我有更快更容易的方法来做这件事吗?

我读了一些类似??的东西来解决这个问题。但我不知道怎么用?

更新非常感谢您的反馈。现在我无法忍受??接线员,但是在这种情况下我是怎么意识到的呢?

代码语言:javascript
复制
let person = PeoplePicker.selectedRecords as! [ABPerson]
let address = person[0].value(forProperty: kABAddressProperty) as?
        ABMultiValue
txtStreet.stringValue = (((address?.value(at: 0) as! NSMutableDictionary).value(forKey: kABAddressStreetKey) as! String))

我该怎么用??操作符在我的代码的最后一行?

更新2,好的,我知道了!

代码语言:javascript
复制
txtStreet.stringValue = (((adresse?.value(at: 0) as? NSMutableDictionary)?.value(forKey: kABAddressStreetKey) as? String)) ?? ""
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-01 17:12:51

您可以这样做,但是您的strValue应该是可选类型。

代码语言:javascript
复制
let strValue:String?
textfield.stringValue = strValue ?? "your default value here"
票数 26
EN

Stack Overflow用户

发布于 2017-07-01 18:27:32

??是一个零聚的操作符,我也有点理解了.不过,它是简化代码的有用工具。一个简单的解释是“除非是零,否则这个”,所以a ?? b返回a (如果它有值)和b (如果没有),您可以将它们链接在一起并返回第一个非零值。例如,a ?? b ?? c ?? d ?? e返回第一个非零值,如果它们在其前面都为零,则返回e

零-聚结算子

票数 2
EN

Stack Overflow用户

发布于 2019-05-23 11:14:29

使用0-煤焦操作符,我们可以避免使用代码来展开和清理代码。

若要在可选值为零时提供简单默认值:

代码语言:javascript
复制
let name : String? = "My name"
let namevalue = name ?? "No name"
print(namevalue)

这里需要注意的是,如果让或在这里保护,则不需要使用展开它,它将被隐式地打开,但是安全的。

此外,让代码更简洁、更简洁也很有用:

代码语言:javascript
复制
   do {
        let text = try String(contentsOf: fileURL, encoding: .utf8)
    }
    catch {print("error")}

上面的代码可以写成:

代码语言:javascript
复制
let text = (try? String(contentsOf: fileURL, encoding: .utf8)) ?? "Error reading file"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44863431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档