我找不到contentsOfURL
的任何替代方法来解决此问题。
这是我的Swift代码:
import Foundation
import MapKit
class MapHelper{
func geoCodeUsingAddress(address:String) ->CLLocationCoordinate2D{
var latitude = 0.0
var longitude = 0.0
let esc_addr = address.stringByAddingPercentEscapesUsingEncoding(NSUTF8StringEncoding)
let req = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=\(esc_addr)"
let result:NSString? = NSString(contentsOfURL: NSURL(string: req)); // here is error //msg comes
if let value=result{
let scanner:NSScanner = NSScanner(string: value)
if(scanner.scanUpToString("\"lat\" :", intoString: nil) && scanner.scanString("\"lat\" :", intoString: nil)){
scanner.scanDouble(&latitude)
}
if(scanner.scanUpToString("\"lng\" :", intoString: nil) && scanner.scanString("\"lng\" :", intoString: nil)){
scanner.scanDouble(&longitude);
}
}
else{
}
var center:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: 0, longitude: 0);
center.latitude = latitude;
center.longitude = longitude;
return center;
}
}
答案 0 :(得分:1)
试试这个
let urlPath: String = "YOUR URL HERE"
let data = NSString(contentsOfURL: urlPath, encoding: NSASCIIStringEncoding, error: nil)
答案 1 :(得分:1)
从远程服务器加载时,建议不要使用contentsOfURL:encoding:
。最好使用适合此任务的NSURLConnection
或NSURLSession
专用方法。
最简单的方法是使用NSURLConnection
类方法sendAsynchronousRequest:queue:completionHandler:
。但是这种方法有一些限制 - 例如,它无法取消,身份验证仅适用于使用HTTB基本身份验证传递URL中的凭据。
有关进一步参考,请参阅"异步加载数据"在NSURLConnection Class Reference
答案 2 :(得分:0)
那是旧的contentsWithURL,后来被弃用了。您现在需要添加编码和错误。
let result = NSString(contentsOfURL: "http://www.google.com", encoding: NSASCIIStringEncoding, error: nil)