Swift3 swift |未解决的标识符错误
代码如下:Swift3 swift |未解决的标识符错误,swift3,Swift3,代码如下: let task: URLSessionDataTask = session.dataTask(with: request as URLRequest) { (data, response, error) -> Void in // Get the HTTP status code of the request. let statusCode = (response as! HTTPURLResponse).statusCode if
let task: URLSessionDataTask = session.dataTask(with: request as URLRequest) { (data, response, error) -> Void in
// Get the HTTP status code of the request.
let statusCode = (response as! HTTPURLResponse).statusCode
if statusCode == 200 {
// Convert the received JSON data into a dictionary.
do {
if let dataDictionary = (try? JSONSerialization.jsonObject(with: data!, options: [JSONSerialization.ReadingOptions.mutableContainers])) as? [String:Any] { let accessToken = dataDictionary["access_token"] as? String }
UserDefaults.setObject(accessToken, forKey: "LIAccessToken")
UserDefaults.standard.synchronize()
DispatchQueue.main.async(execute: { () -> Void in
self.dismiss(animated: true, completion: nil)
})
}
catch {
print("Could not convert JSON data into a dictionary.")
}
}
新代码:这是来自应用程序尾码,无法在最新的swift中编译
让dataDictionary=尝试NSJSONSerialization.JSONObjectWithDatadata!,选项:NSJSONReadingOptions.MutableContainers
let accessToken = dataDictionary["access_token"] as! String
NSUserDefaults.standardUserDefaults().setObject(accessToken, forKey: "LIAccessToken")
NSUserDefaults.standardUserDefaults().synchronize()
dispatch_async(dispatch_get_main_queue(), { () -> Void in
self.dismissViewControllerAnimated(true, completion: nil)
})
您必须这样使用: 您在if循环中定义了accessToken。而你正在它之外访问它
if let dataDictionary = (try? JSONSerialization.jsonObject(with: data!, options: [JSONSerialization.ReadingOptions.mutableContainers])) as? [String:Any] {
let accessToken = dataDictionary["access_token"] as? String
UserDefaults.setObject(accessToken, forKey: "LIAccessToken")
}
未解析的标识符accessToken。。。当我在外部定义它时,我会在哪一行得到更多的错误?这只是因为编译器不知道什么是accesToken!请参阅了解是什么,这是程序员的一个基本概念,您离不开它。我正在尝试从appcoda编译该类:这带来了其他错误:实例成员“setObject”不能用于类型“UserDefaults”;你的意思是使用这种类型的值吗?-如何去掉它?