我在以下几行中遇到错误......
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()
答案 0 :(得分:1)
方法签名已更改,现在它接受选项而不是强制解包的对象:
func dataTaskWithRequest(_ request: NSURLRequest,
completionHandler completionHandler: (NSData?,
NSURLResponse?,
NSError?) -> Void) -> NSURLSessionDataTask
这应该可以解决您的错误,但您可以阅读更多here。
答案 1 :(得分:1)
首先在新的swift中,这些值是可选项,您不必将它们指定为NSData或NSError或NSResponse。
其次,您必须为JSONObjectWithData执行此操作,因为它抛出了这是一种新的错误处理方式。所以你需要使用新的Do,try和catch。
do {
let parsedStores = try JSONSerialization.JSONObjectWithData(data, options: nil)
//Your other code
}
catch {
}