ios和swift的新手.想要一些最佳实践技巧.我想将内容添加到新行中的标签中.我的尝试:
@IBOutlet weak var history: UILabel!
@IBAction func appendContent() {
if history.text != nil && !history.text!.isEmpty {
history.text = history.text! + "\r\n" + "some content"
}
else{
history.text = digit
}
}
Run Code Online (Sandbox Code Playgroud)
然而,它似乎工作,
您可以使用可选绑定:if let
检查是否有内容nil
.
例1:
if let text = history.text where !text.isEmpty {
history.text! += "\ncontent"
} else {
history.text = digit
}
Run Code Online (Sandbox Code Playgroud)
或者您可以map
用来检查选项:
例2:
history.text = history.text.map { !$0.isEmpty ? $0 + "\ncontent" : digit } ?? digit
Run Code Online (Sandbox Code Playgroud)
!$0.isEmpty
在大多数情况下甚至不需要,所以代码可以看起来更好一点:
history.text = history.text.map { $0 + "\ncontent" } ?? digit
Run Code Online (Sandbox Code Playgroud)
编辑:做map
什么:
map方法解决了使用函数转换数组元素的问题.
假设我们有一个代表一些金额的Ints数组,我们想要创建一个新的字符串数组,其中包含货币值后跟"€"字符,即[10,20,45,32] -> ["10€","20€","45€","32€"]
.
这样做的丑陋方法是创建一个新的空数组,迭代我们的原始数组,转换每个元素并将其添加到新数组
var stringsArray = [String]()
for money in moneyArray {
stringsArray += "\(money)€"
}
Run Code Online (Sandbox Code Playgroud)
使用map
只是:
let stringsArray = moneyArray.map { "\($0)€" }
Run Code Online (Sandbox Code Playgroud)
它也可以用于选项:
现有映射允许您将函数应用于可选内部的值,如果该可选项不是nil.例如,假设您有一个可选的整数i,并且您希望将其加倍.你可以写i.map {$ 0*2}.如果我有一个值,你会得到一个双倍的可选值.另一方面,如果我是零,则不会发生加倍.
(来源)
做了??
什么:
如果a包含值,则nil合并运算符(a ?? b)展开可选a;如果a为n,则返回默认值b.表达式a始终是可选类型.表达式b必须与存储在a中的类型匹配.
nil合并运算符是以下代码的简写:
a != nil ? a! : b
Run Code Online (Sandbox Code Playgroud)