作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
为什么这样做(示例 1):
if let numString:String = Model.selectedLocation?.zip{
let callString:String = String(format:"tel:%@",numString)
//more code here
}
但不是这个(示例 2):
if let numString:String = String(format:"tel:%@",Model.selectedLocation?.zip){
//more code here
}
在第二个示例中,Xcode 抛出错误并希望 zip
像这样解包: String(格式:"tel:%@",(Model.selectedLocation?.zip)!)
但如果我这样做,当 zip
为 nil 时应用程序将崩溃。
问题:有没有办法使上面的第二个示例工作或者不可能/不正确?
最佳答案
String(format:)
。它是 Foundation
框架中 NSString
的一个方法,它有几个结果:
Foundation
。String
桥接到 NSString
。Swift 3
中不起作用,因为桥接是明确的。这里的根本问题是 String(format:)
返回 String?
(因为格式字符串可能无效)。您可以通过使用 Swift 的字符串插值来完全避免这种情况:
if let numString = Model.selectedLocation?.zip {
let callString = "tel: \(numString)"
//more code here
}
...或简单的连接:
if let numString = Model.selectedLocation?.zip {
let callString = "tel: " + numString
//more code here
}
关于swift - 一步可选链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39003267/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!