我有一个类YoutubeAPIClient:

import Foundation

class YoutubeAPIClient {
    let apiKey: String?

    init?() {
        do {
            apiKey = try Environment().getValue(for: "YOUTUBE_API_KEY") as? String
        } catch {
            //TODO: Implement error handling
            print(error)
        }
    }
}

在初始化方法中,我尝试初始化apiKey,但它说:
Constant 'self.apiKey' used before being initialized

如果有帮助,我已经包括了“环境代码”结构:
import Foundation

struct Environment {

    func getValue(for key: String) throws -> Any {

        guard let value = ProcessInfo.processInfo.environment[key] else {
            throw GenericError.noValueForKeyInEnvironment
        }

        return value
    }
}

最佳答案

您必须处理错误,否则实例将以未定义状态结束(错误时apiKey未初始化)。

由于您的init已经失败,因此您可以返回nil:

} catch {
    print(error)
    return nil
}

关于ios - 初始化程序中出现错误“在初始化之前使用常量'self.apiKey'”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50088118/

10-12 02:38