“条件绑定的初始化程序必须具有可选类型,而不是'[String]'”

“条件绑定的初始化程序必须具有可选类型,而不是'[String]'”

问题描述:

我试图在Swift 3.0中为CocoaPods获取窗格“Swift-YouTube-Player”,并且出现以下错误代码如下(错误指向let pathComponents部分)。“条件绑定的初始化程序必须具有可选类型,而不是'[String]'”

“初始值设定条件结合必须有可选的类型,而不是‘[字符串]’”

public func videoIDFromYouTubeURL(_ videoURL: URL) -> String? { 
    if let host = videoURL.host, let pathComponents = videoURL.pathComponents , pathComponents.count > 1 && host.hasSuffix("youtu.be") { 
     return pathComponents[1] 
    } 
    return videoURL.queryStringComponents()["v"] as? String 
} 

貌似videoURL.pathComponents是不可选的,所以你必须打破的情况是这样的:

public func videoIDFromYouTubeURL(_ videoURL: URL) -> String? { 
    if let host = videoURL.host { 
     let pathComponents = videoURL.pathComponents 
     if pathComponents.count > 1 && host.hasSuffix("youtu.be") { 
      return pathComponents[1] 
     } 
    } 
    return videoURL.queryStringComponents()["v"] as? String 
}