簡體   English   中英

錯誤域= NSURLErrorDomain代碼= -999“已取消”

[英]Error Domain=NSURLErrorDomain Code=-999 “cancelled”

我正在嘗試通過在網址中提供地點ID來獲取地點詳細信息,如下所示。

func findingPlaceDetailsFromPlaceId(id : String){


   var urlString = "https://maps.googleapis.com/maps/api/place/details/json?placeid=\(id)&key=\(apiServerKey)"
    urlString = urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
    //println(urlString)
    if placesTask.taskIdentifier > 0 && placesTask.state == .Running {
        placesTask.cancel()

    }
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true
    placesTask = session.dataTaskWithURL(NSURL(string: urlString)!) {data, response, error in

        println(error)
        UIApplication.sharedApplication().networkActivityIndicatorVisible = false
        if let json = NSJSONSerialization.JSONObjectWithData(data, options:nil, error:nil) as? NSDictionary {

            if let results = json["result"] as? NSArray {
                println(results.count)
                for rawPlace:AnyObject in results {
                    let dict = rawPlace as! NSDictionary
                if let location = dict["geometry"]?["location"] as? NSDictionary{

                    let lat = location["lat"] as! CLLocationDegrees
                    let long = location["lng"] as! CLLocationDegrees
                    self.coordinate = CLLocationCoordinate2DMake(lat, long)
                    }

                }
            }
        }
        dispatch_async(dispatch_get_main_queue()) {


        }

    }

    self.placesTask.resume()
}

給定的URL是有效的URL。 如果我在Google中輸入相同的網址,則會得到有效的結果,但是當我在我的應用中運行它時,它會顯示“錯誤域= NSURLErrorDomain代碼= -999”。

我為上述錯誤找到了解決方案。 我正在從searchResultControllerView的didSelectRow中調用findPlaceDetailsFromPlaceId(id:String)方法。 調用該方法后,我立即關閉了searchResultControllerView。 這導致上述錯誤。 現在,如下所示,在dispatch_async(dispatch_get_main_queue())中關閉searchResultControllerView。

 func findingPlaceDetailsFromPlaceId(id : String){

   var urlString = "https://maps.googleapis.com/maps/api/place/details/json?placeid=\(id)&key=\(apiServerKey)"
    urlString = urlString.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)!
    if placesTask.taskIdentifier > 0 && placesTask.state == .Running {
        placesTask.cancel()

    }
    UIApplication.sharedApplication().networkActivityIndicatorVisible = true
    placesTask = session.dataTaskWithURL(NSURL(string: urlString)!) {data, response, error in

        UIApplication.sharedApplication().networkActivityIndicatorVisible = false
        if let json = NSJSONSerialization.JSONObjectWithData(data, options:nil, error:nil) as? NSDictionary {

            if let results = json["result"] as? NSDictionary {

                if let location = results["geometry"]?["location"] as? NSDictionary{
                    let lat = location["lat"] as! CLLocationDegrees
                    let long = location["lng"] as! CLLocationDegrees
                    self.coordinate = CLLocationCoordinate2DMake(lat,long)

                }
            }
        }
//This is what I added
        dispatch_async(dispatch_get_main_queue()) {
            //Dismissing the ResultControllerView
            self.searchController?.dismissViewControllerAnimated(true, completion: {
                //Pushing the view back to main view after completion
                performSegueWithIdentifier("unwindFromSelectLocation", sender: self)
            })



        }

    }

問題解決了。希望對其他人有用!!!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM