JSON致命错误:在展开可选值时意外发现nil

JSON致命错误:在展开可选值时意外发现nil,json,swift,swifty-json,Json,Swift,Swifty Json,我不太清楚为什么会出现这个错误。是否有一些我没有检查的可选值或某种我缺少的选项 func getJSON(){ let url = NSURL(string: myURL) let request = NSURLRequest(url: url! as URL) let session = URLSession(configuration: URLSessionConfiguration.default) let task = session.dataTask(

我不太清楚为什么会出现这个错误。是否有一些我没有检查的可选值或某种我缺少的选项

func getJSON(){

    let url = NSURL(string: myURL)
    let request = NSURLRequest(url: url! as URL)
    let session = URLSession(configuration: URLSessionConfiguration.default)
    let task = session.dataTask(with: request as URLRequest) { (data,response,error) -> Void in

        if error == nil {

            let swiftyJSON = JSON(data:data!)

            let theTitle = swiftyJSON["results"].arrayValue

            for title in theTitle{

                let titles = title["title"].stringValue
                print(titles)
            }


        } else{
            print("Error")
        }
    }
    task.resume()
}

如果在强制展开时,错误是
url
为零,那么这意味着在它前面的行上,在创建
url
的地方,您在
myURL
中传递了一个值,由于某些原因,该值实际上无法解析为
NSURL
对象

打印出
myURL
并查看它是什么。我打赌它的格式不太好

顺便说一句,无论如何你都不应该强制展开。试着这样做:

guard let url = NSURL(string: myURL) else {
  print("Couldn't parse myURL = \(myURL)")
  return
}

let request = NSURLRequest(url: url as URL)  // <-- No need to force unwrap now.
guard let url=NSURL(字符串:myURL)else{
打印(“无法分析myURL=\(myURL)”)
返回
}

让request=NSURLRequest(url:url as url)/如果强制展开时错误是
url
为零,那么这意味着在它前面的行上,在创建
url
的地方,您在
myURL
中传递了一个值,由于某种原因,该值实际上无法解析为
NSURL
对象

打印出
myURL
并查看它是什么。我打赌它的格式不太好

顺便说一句,无论如何你都不应该强制展开。试着这样做:

guard let url = NSURL(string: myURL) else {
  print("Couldn't parse myURL = \(myURL)")
  return
}

let request = NSURLRequest(url: url as URL)  // <-- No need to force unwrap now.
guard let url=NSURL(字符串:myURL)else{
打印(“无法分析myURL=\(myURL)”)
返回
}

let request=NSURLRequest(url:url as url)//您从哪里得到这个错误,哪一行?您的命名(复数-多个项目
theTitle
和单数-一个项目
titles
)非常混乱。由于您使用的是Swift 3,因此有
URL
URLRequest
。错误出现在请求行:let request=NSURLRequest(URL:URL!as URL),则URL不正确,并强制展开
URL导致错误。你从哪里得到这个错误,哪一行?你的命名(复数-多个项目
标题
和单数-一个项目
标题
)非常混乱。由于您使用的是Swift 3,因此有
URL
URLRequest
。错误出现在请求行:let request=NSURLRequest(URL:URL!as URL),则URL不正确,并强制展开
URL导致错误。哇,非常感谢。那么,拆开包装就像是某种安全网吗?不完全是这样。在某些情况下,你需要说,“不,真的,相信我,我知道我在做什么”,但在大多数情况下,如果你有一个可选的,你需要在使用它之前正确地打开它。最简单的方法是使用
guard let foo=someOptional
如果let foo=someOptional
。非常感谢。我是swift的新手,所以这是非常有帮助的进一步阅读:@NickBalistreri你应该看看并阅读苹果的《swift编程语言》一书的相关章节。哇,非常感谢。那么,拆开包装就像是某种安全网吗?不完全是这样。在某些情况下,你需要说,“不,真的,相信我,我知道我在做什么”,但在大多数情况下,如果你有一个可选的,你需要在使用它之前正确地打开它。最简单的方法是使用
guard let foo=someOptional
如果let foo=someOptional
。非常感谢。我是swift的新手,因此这是非常有帮助的进一步阅读:@NickBalistreri您应该看到并阅读苹果公司《swift编程语言》一书的相关章节。