Ios “如何修复错误”;未解析标识符的使用“;实际上我什么时候可以访问该标识符

Ios “如何修复错误”;未解析标识符的使用“;实际上我什么时候可以访问该标识符,ios,swift,swift4,sirikit,Ios,Swift,Swift4,Sirikit,我有一个定义为Singleton的类,我尝试从该类访问2个函数,但我得到一个错误,即无法找到该类,但当我按Cmd+单击时,我可以导航到该类。 我重新启动了很多次xCode,我也试过使用xCode 10和xCode 9…同样的错误。我不知道怎么修理它 这是我的密码: // First Class class BankAccount { private init() {} static let bankAccountKey = "Bank Account" static

我有一个定义为Singleton的类,我尝试从该类访问2个函数,但我得到一个错误,即无法找到该类,但当我按Cmd+单击时,我可以导航到该类。 我重新启动了很多次xCode,我也试过使用xCode 10和xCode 9…同样的错误。我不知道怎么修理它

这是我的密码:

// First Class
class BankAccount {

    private init() {}

    static let bankAccountKey = "Bank Account"
    static let suiteName = "group.com.YourName"

    // Function to set the balance for ShoppingLand Bank
    static func setBalance(toAmount amount: Double) {
        guard let defaults = UserDefaults(suiteName: suiteName) else { return }
        defaults.set(amount, forKey: bankAccountKey)
        defaults.synchronize()
    }

    // Function to check new updates about the balance of ShoppingLand Bank
    static func checkBalance() -> Double? {
        guard let defaults = UserDefaults(suiteName: suiteName) else { return nil }
        defaults.synchronize()
        let balance = defaults.double(forKey: bankAccountKey)
        return balance
    }

    @discardableResult
    static func withdraw(amount: Double) -> Double? {
        guard let defaults = UserDefaults(suiteName: suiteName) else { return nil }
        let balance = defaults.double(forKey: bankAccountKey)
        let newBalance = balance - amount
        setBalance(toAmount: newBalance)
        return newBalance
    }

    @discardableResult
    static func deposit(amount: Double) -> Double? {
        guard let defaults = UserDefaults(suiteName: suiteName) else { return nil }
        let balance = defaults.double(forKey: bankAccountKey)
        let newBalance = balance + amount
        setBalance(toAmount: newBalance)
        return newBalance
    }
}

// Second Class

import Intents

class IntentHandler: INExtension {}

extension IntentHandler: INSendPaymentIntentHandling {
    func handle(intent: INSendPaymentIntent, completion: @escaping (INSendPaymentIntentResponse) -> Void) {

        guard let amount = intent.currencyAmount?.amount?.doubleValue else {
            completion(INSendPaymentIntentResponse(code: .failure, userActivity: nil))
            return
        }

        BankAccount.withdraw(amount: amount)
        completion(INSendPaymentIntentResponse(code: .success, userActivity: nil))
    }
}


extension IntentHandler: INRequestPaymentIntentHandling {
    func handle(intent: INRequestPaymentIntent, completion: @escaping (INRequestPaymentIntentResponse) -> Void) {

        guard let amount = intent.currencyAmount?.amount?.doubleValue else {
            completion(INRequestPaymentIntentResponse(code: .failure, userActivity: nil))
            return
        }
        BankAccount.deposit(amount: amount)
        completion(INRequestPaymentIntentResponse(code: .success, userActivity: nil))

    }
}
下面是一个演示:


谢谢你抽出时间

你没有正确设置你的单身汉<代码>银行账户是一个类,而不是一个实例。singleton是类的一个版本,其中只有一个实例将被访问,但您仍在访问一个实例。您需要添加:

class BankAccount {
    static let shared = BankAccount()
    ...
到你的银行账户课。
shared
属性是实际的单例实例。稍后,当您尝试访问singleton时,而不是

BankAccount.withdraw(amount: amount)
您要使用该实例:

BankAccount.shared.withdraw(amount: amount)

确保BankAccount的类文件可用于其他目标->ShoppingLandSiri。您可以从“文件检查器”视图中进行检查。

请指出哪一行给了您错误。请单击演示查看错误是什么。是说找不到班级银行账户。我没有点击任何奇怪的链接。您需要更新您的问题,以明确指出哪些行导致错误。使用未解析标识符“BankAccount”。这就是错误所在。但当我按Cmd+点击BankAccount时,它正在导航到该类。你在取款行上遇到了相同的错误?这就是宝贝!重操旧业!非常感谢你!