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で同じ結果を得ることができましたか?