- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
Swift 3 在 NSLocale(现在是 Locale)类中引入了很多变化。我需要执行 NSLocale.currentLocale()
的方法调配来执行一些助手的单元测试。在 Swift 2.3 中,我可以使用这种方法:
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)
}
}
}
现在的问题是 Swift 3 currentLocale
不再存在,它已被属性 current
取代。
如何使用 Swift 3 实现相同的结果?
最佳答案
current
是 NSLocale
的(只读)计算属性:
open class var current: Locale { get }
您为 Objectice-C 属性 getter 构建了一个选择器
let originalSelector = #selector(getter: NSLocale.current)
另见 SE-0064 Referencing the Objective-C selector of property getters and setters .
关于swift - NSLocale.currentLocale 的端口方法 swizzle 从 swift 2.3 到 swift 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40739470/
我正在尝试使用以下代码获取用户选择的当前首选语言: NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 这是第一
我似乎一直在围绕这个问题兜圈子,但现在却无路可走。 我正在尝试强制我的应用程序的语言(瑞典语),如下所示。 @autoreleasepool { [[NSUserDefaults standa
我想在应用程序中添加两个按钮并执行一些操作。我想在 XIB 中切换两种语言按钮。假设有Button,1是英文,2是法文。我在应用程序中添加了一些数据。如果我选择英语按钮,则数据将以英语显示,而法语按钮
以下代码提供了一个包含所有语言的数组, 我还是希望过滤掉诸如“en-GB”,“zh-Hant”之类的变体,并且每个语言只有一个2个字符的数组。 苹果这样做的优雅方式是什么? NSLog(@"[NSL
我有一根绳子,根据某些情况,中间有不同的部分。 示例:您失去了 255 积分。 点值“255”是变化的部分,我想将不变的部分保存在我的字符串文件中。但是我不想在我的字符串文件中有两个条目,例如。 "s
[NSLocale currentLocale]可能会返回 'en_US@calendar=japanese'} 问题:我可以说 NSLocale 不附加 calendar=japanese到语言环境
我正在尝试使用以下代码获取设备当前选择的语言代码。 NSString *language = [[NSLocale preferredLanguages] objectAtIndex:0]; 此行在安
我希望少数 iTunes 商店使用我的应用程序。我读了NSLocale Class Reference他们正在谈论“当前用户”。那么,谁是“当前用户”?是下载过app的用户吗? 1) 是否有可能根据当
我正在使用闹钟应用程序。我正在使用 NSLocal 通知创建警报。警报工作正常。我的问题是我需要不间断地重复循环 Alatm。 我的代码: UILocalNotification *localNot
我正在使用 Swift 3 开发 iOS。 我得到了国家名称字符串,如“日本”、“英国”、“西类牙”等。 我想知道从国家名称生成 NSLocale 实例的最佳方法是什么? 我只找到了localized
我已经找到了很多方法来解决这个问题,但没有有效的解决方案。这是我尝试过但没有奏效的方法。 (1) 只需调用primaryLanguage() UITextInputMode().primaryLang
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
所以在我的应用程序中,我试图获取设备当前设置的语言及其首字母缩写词。所以我这样做: NSString *fullLanguage = [[NSLocale currentLocale] display
我使用以下代码作为代码和国家/地区名称,但它返回 null。 NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode =
有没有办法像在设置应用程序中一样在 iphone 上获取所有可用语言? 在 NSLocales 类引用中找不到方法。 谢谢! alt text http://dl.getdropbox.com/u/8
我使用此代码获取 iPhone 属于哪个国家/地区: NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [loc
我想获取当前选择的 iPhone 语言。如果使用“NSLocale”,它总是返回相同的语言。看来这不是您在 iPhone 设置中选择的。 NSLocale * locale = [NSLocale c
有没有更好的方法来编码而不使用魔术“en”,“es”字符串? let pre = Locale.preferredLanguages[0] if pre == "en" .... el
我试图让 Xcode 返回各种格式的 iOS 语言名称列表。在下面的代码中,我创建了一个字典,返回可以从 NSLocale 返回的各种字符串。 langInUsersLang - 返回用户语言的语言名
我想获得一份国家列表,其中包含相应的语言和货币。 首先我创建了我的类来存储我需要的信息: class Country: NSObject { var localeID:String?
我是一名优秀的程序员,十分优秀!