Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 2.x到Swift 3,Xcode错误:类型为'的非可选表达式;字符串';用于检查可选项_Swift - Fatal编程技术网

Swift 2.x到Swift 3,Xcode错误:类型为'的非可选表达式;字符串';用于检查可选项

Swift 2.x到Swift 3,Xcode错误:类型为'的非可选表达式;字符串';用于检查可选项,swift,Swift,从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=respons

从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]"
带着信息

“检查选项时使用的'String'类型的非可选表达式”


它在Swift 2.X上工作得很好,但在Swift 3上却没有。如何更改此代码以使其正常工作?

不要使用强制展开选项。强制展开使其成为非可选值,因此无法使用可选绑定。此外,数组订阅不会返回可选值,因此,与其尝试使用可选绑定检查数组是否有那么多元素,不如在展开数组后检查它是否有您想要访问的元素

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]
}

真 的!这是一个完美的答案,它就像一个魅力,thks!