2016-10-24 2 views
1

Вот мой код ниже:Использование неразрешенного идентификатора 'Singleton' Swift 3

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

Любые идеи о том, как разрешить эту ошибку?

+3

Вы определили '' Singleton' внутри sharedInstance' ... неправильно сфера. – Moritz

+0

@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 
    } 
} 
Смежные вопросы