在 swift 中创建 url 对象

Creating a url object in swift

我在以下行中收到错误...

let taskData = session.dataTaskWithRequest(request, completionHandler: { ( data: NSData!, reponse:NSURLResponse!, error: NSError!) -> Void in

let parsedStores = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &parseError) as! NSDictionary

if let stores: AnyObjec = parsedStores["Stores"]


此代码适用于 IOS8,我将语法转换为最新的 Swift 语法,但它给我留下了这些错误,我试图专门针对语法编辑器上的错误,但它仍然没有修复它。请帮我摆脱这些。谢谢

函数代码。

func loadRecords()
    {

        let urlString = "http://google.com"

        let config = NSURLSessionConfiguration.defaultSessionConfiguration()
        let session = NSURLSession(configuration: config, delegate: nil, delegateQueue: nil)


      //Create the URL Object 
       if let url = NSURL(string: urlString)
        {
            // Create the request object 
            let request = NSURLRequest(URL: url)

             // execute the request 
            let taskData = session.dataTaskWithRequest(request, completionHandler: { ( data: NSData!, reponse:NSURLResponse!, error: NSError!) -> Void in
                // Do something with the data back 
                if (data != nil)
                {
                    //get some data back 
                    print("\(data)")

                    var parseError:NSError?

                    let parsedStores = NSJSONSerialization.JSONObjectWithData(data, options: nil, error: &parseError) as! NSDictionary


                    println("JSON Data \n \(parsedStores)")
                    if let stores: AnyObjec = parsedStores["Stores"]
                    {
                        self.parseJSON(stores)
                    }

                } else

                {    //we got an error
                    print("Error getting stores: \(error.localizedDescription)")


                }

            })

            taskData.resume()

方法签名已更改,它现在接受可选项而不是强制展开的对象:

func dataTaskWithRequest(_ request: NSURLRequest,
   completionHandler completionHandler: (NSData?,
                              NSURLResponse?,
                              NSError?) -> Void) -> NSURLSessionDataTask

这应该可以解决您的错误,但您可以阅读更多内容 here

首先,在新的 swift 中,这些值是可选的,您不必将它们指定为 NSData 或 NSError 或 NSResponse。

其次,您必须为 JSONObjectWithData 执行此操作,因为它会抛出错误处理的新方法。所以你需要使用新的 Do, try and catch。

   do {
   let parsedStores = try JSONSerialization.JSONObjectWithData(data, options: nil)
   //Your other code
   }
   catch {
   }