2015-02-19 2 views
0

Я пытаюсь сделать подкласс AFHTTPSessionManager с помощью Swift. Согласно документации, рекомендуется создать один экземпляр вашего подкласса. Я понимаю, как сделать singleton в Swift, но мне нужно иметь возможность инициализировать мой синглтон с базовым URL.Подкласс SFHTTPSessionManager Singleton с конфигурацией в Swift

class ZRUserAuthenticationHTTPSessionManager: AFHTTPSessionManager { 
    class var sharedManager: ZRUserAuthenticationHTTPSessionManager { 

    struct StaticManager { 
     static var instance: ZRUserAuthenticationHTTPSessionManager? = nil 
     static var onceToken: dispatch_once_t = 0 
    } 

    if (StaticManager.instance == nil) { 
     dispatch_once(&StaticManager.onceToken) { 
     StaticManager.instance = ZRUserAuthenticationHTTPSessionManager(baseURL: myURL) 
     } 
    } 

    return StaticManager.instance! 
    } 
} 

Как разрешить инициализацию экземпляра singleton с помощью настраиваемого параметра?

Thanks

+0

Вы можете установить (и восстановить) baseURL после инициализации. –

+0

Я не могу установить 'baseURL' после инициализации. В быстром заголовке для 'AFHTTPSessionManager':' var baseURL: NSURL! {get} ' Поскольку здесь переменная readonly, мне нужно инициализировать мой синглтон с помощью baseURL. – AnthonyM

ответ

0

Я выяснил, как это сделать.

public class func createSharedManager(baseURL: NSURL!) -> ZRUserAuthenticationHTTPSessionManager { 
    StaticManager.instance = ZRUserAuthenticationHTTPSessionManager(baseURL: baseURL) 

    return StaticManager.instance! 
} 

public class var sharedManager: ZRUserAuthenticationHTTPSessionManager? { 
    return StaticManager.instance 
} 

private struct StaticManager { 
static var instance: ZRUserAuthenticationHTTPSessionManager? = nil 
} 
Смежные вопросы