2016-11-22 8 views
1

Swift 3では、NSLocale(現在のLocale)クラスに多くの変更が導入されました。私はNSLocale.currentLocale()のメソッドswizzleを実行して、いくつかのヘルパーの単体テストを実行する必要があります。swift 2.3からswift 3へのNSLocale.currentLocaleのポートメソッドswizzle

extension NSLocale { 
    @nonobjc static var ttt_locale = "us_US" 
    @nonobjc static var ttt_swizzled = false 

    class func customizedLocale()->NSLocale{ 
     return NSLocale(localeIdentifier: NSLocale.ttt_locale) 
    } 

    class func forceLocale(identifier:String){ 
     NSLocale.ttt_locale = identifier 

     if !NSLocale.ttt_swizzled { 
      NSLocale.ttt_swizzled = true 
      let originalSelector = #selector(NSLocale.currentLocale) 
      let swizzledSelector = #selector(self.customizedLocale) 

      let originalMethod = class_getClassMethod(self, originalSelector) 
      let swizzledMethod = class_getClassMethod(self, swizzledSelector) 

      method_exchangeImplementations(originalMethod, swizzledMethod) 
     } 
    } 
} 

問題は今スウィフト3でcurrentLocaleはしかし、もはや、それがプロパティcurrentで置換されていることである:スウィフト2.3で、私はこの方法を使用することができます。

どのようにSwift 3で同じ結果を得ることができましたか?

答えて

関連する問題