从Swift 2.x迁移到Swift 3,我的代码上有警告:
let response=NSString(data:data!,encoding:
String.Encoding.utf8.rawValue)
let responseArray:Array=response!.components(separatedBy: "|VCSPACER|")
if let result:String=responseArray[0] {
if let action:String=responseArray[1] {
if let datas:String=responseArray[2] {
.......
}
}
}
编译器在行警告:
"if let action:String=responseArray[0]" and line "if let action:String=responseArray[1]" and "line if let datas:String=responseArray[2]"
带有消息
"类型'字符串'的非可选表达式用于检查选项"
它完全适用于Swift 2.X但不适用于Swift 3.如何更改此代码才能使其正常工作?
答案 0 :(得分:4)
请勿使用强制展开选项。强制解包使其成为非可选值,因此不能使用可选绑定。此外,数组下标不会返回一个可选值,因此,在解开数组后,不要尝试使用可选绑定来检查数组是否包含那么多元素,而是检查它是否包含您想要访问的元素数。
if let data = data,
let responseArray = String(data: data, encoding: .utf8)?
.components(separatedBy: "|VCSPACER|"),
responseArray.count > 2 {
let result = responseArray[0]
let action = responseArray[1]
let datas = responseArray[2]
}