使用未解决的标识符-IOS Swift3



我在这里的智慧结束了,我一直在研究这个问题,而Cannont似乎解决了这个问题。我对编码世界很陌生,所以我确定这是一个新秀错误,但我无法浪费更多的时间,几乎是一个星期。

我在Xcode 8.3,Swift 3中写作。在我粘贴下面的代码之前,我的应用程序会很合适,但这是行不通的。Auth0说我正在误解此代码。

我会收到以下错误:使用未解决的标识符'accessToken'我没有其他错误或红色!我已经尝试移动代码,这是行不通的。我尝试过,否则,如果语句,那是行不通的。我已经花了很多时间麻木的时间谷歌搜索,但我仍然似乎无法掌握我在做错什么。

这是代码:

import UIKit
import Lock
import Auth0
import SimpleKeychain
class HomeViewController: UIViewController {
    // MARK: - IBAction
    @IBAction func showLoginController(_ sender: UIButton) {
        Lock
            .classic()
            .withOptions {
                $0.oidcConformant = true
                $0.scope = "openid profile"
            }
            .onAuth { credentials in
                let keychain = A0SimpleKeychain(service: "Auth0")
                guard let accessToken = credentials.accessToken else { return }
                keychain.setString(accessToken, forKey: "access_token")
                self.showSuccessAlert(accessToken)
            }
            .present(from: self)
        Auth0
            .authentication()
            .userInfo(withAccessToken: accessToken)
            .start { result in
                switch(result) {
                case .sucess(let profile): break
                case .failure(let error): break
                }
            }
        Auth0
            .webAuth()
            .scope("openid profile")
            .audience("https://mycompany.auth0.com/userinfo")
            .start {
                switch $0 {
                case .failure(let error):
                    // Handle the error
                    print("Error: (error)")
                case .success(let credentials):
                    // Do something with credentials e.g.: save them.
                    // Auth0 will automatically dismiss the hosted login page
                    print("Credentials: (credentials)")
            }
        }
        Auth0
            .webAuth()
            .scope("openid profile offline_access")
            .start {
                switch $0 {
                case .failure(let error):
                    // Handle the error
                    print("Error: (error)")
                case .success(let credentials):
                    guard let accessToken = credentials.accessToken, let refreshToken = credentials.refreshToken else { return }
                    let keychain = A0SimpleKeychain(service: "Auth0")
                    keychain.setString(accessToken, forKey: "access_token")
                    keychain.setString(refreshToken, forKey: "refresh_token")
            }
        }
    }
    // MARK: - Private
    fileprivate func showSuccessAlert(_ accessToken: String) {
        let alert = UIAlertController(title: "Success", message: "accessToken: (accessToken)", preferredStyle: .alert)
        alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
        self.present(alert, animated: true, completion: nil)

    }
}

调试Swift代码的策略:

  1. 彻底调查LLDB调试器以查看发生了什么
  2. 仔细阅读现有代码(您编写的代码的所有.swift文件)以检查是否有任何拼写错误,等等。
  3. 打开一个新的Xcode项目,并运行每个.swift文件以查明错误在哪里和/或在您现有的Xcode Project中使用断点
  4. 启用僵尸
  5. 代码农药:P

祝您好运!

最新更新