使用未解析的标识符“Singleton”Swift 3

Posted

技术标签:

【中文标题】使用未解析的标识符“Singleton”Swift 3【英文标题】:Use of unresolved identifier 'Singleton' Swift 3 【发布时间】:2016-10-24 09:19:55 【问题描述】:

这是我的以下代码:

private static var __once: () = 
            Singleton.instance = RtccManager()
            if let instance = Singleton.instance 
                instance.connectionParameters = instance.flattenConnectionParametersOverride(nil)
                instance.currentStat = .sta_notConnected
                DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.background).async 
                    instance.rtccConnect([:])
                
            
        ()

    var connectionParameters: [String : Any] = [:]
    var currentStat: AppStatus = AppStatus.sta_notConnected

    class var sharedInstance: RtccManager 
        struct Singleton 
            static var instance: RtccManager? = nil
            static var token: Int = 0
        
        _ = RtccManager.__once

        return Singleton.instance!
    

Singleton.instance = RtccManager()

行出现错误

if let instance = Singleton.instance

错误是:使用未解析的标识符“Singleton” 迁移到 Swift 3.0 后出现此错误

关于如何解决此错误的任何想法?

【问题讨论】:

您在sharedInstance 内定义了Singleton ... 范围错误。 @EricAya:非常感谢,我误会了:) 【参考方案1】:

如果您要迁移代码,最好将您的单例创建模式调整为 Apple 在其 docs 中建议的新方式

这是一个例子

public class RtccManager

    /*
        Nested types
    */
    public enum AppStatus
    
        case sta_connected
        case sta_notConnected
    

    public static let sharedInstance: RtccManager = RtccManager()

    public private(set) var connectionParameters: [String: Any]
    public private(set) var currentStat: AppStatus

    private init()
    
        self.connectionParameters = [String: Any]()
        // flattenConnectionParametersOverride
        self.currentStat = .sta_notConnected
    

【讨论】:

以上是关于使用未解析的标识符“Singleton”Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

Swift:使用未解析的标识符“addChild”

iOS [Swift]:解析 Facebook 登录“使用未解析的标识符‘权限’”

在 Swift 中使用未解析的标识符“参数”

Swift:使用未解析的标识符“json”

Swift:函数中的 UIAlert - 使用未解析的标识符“存在”

Swift 中“使用未解析的标识符”