使用未解析的标识符' Singleton'斯威夫特3

时间:2016-10-24 09:19:56

标签: iphone swift swift3

以下是我的代码:

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后出现此错误

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

1 个答案:

答案 0 :(得分: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
    }
}