在 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 {
}
我在以下行中收到错误...
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 {
}