为了提供一个备用的语言NSLocalizedString,我用这#undef和#define在Objective-C:
#undef NSLocalizedString
#define NSLocalizedString(key, comment) @"NSLocalizedString has been replaced";
Run Code Online (Sandbox Code Playgroud)
如果从 Objective-C 调用,这非常有效,但如果从 Swift 调用,NSLocalizedString则忽略新的定义。(桥接头配置正确且工作正常)
这在 Swift 中是否可行,如果可以,如何实现?
注意:真正的例子在 Github 上,也可以在这里看到SO 答案
您可以对NSObject这样的子类执行此操作
extension NSObject {
func NSLocalizedString(key: String, comment: String) -> String {
return "yes we have localized an NSObject"
}
}
Run Code Online (Sandbox Code Playgroud)
关于什么AnyObject?在这种情况下,您必须了解并遵守子类FallbackLanguage中的协议AnyObject
protocol FallbackLanguage: class {}
// add default implementations
extension FallbackLanguage {
func NSLocalizedString(key: String, comment: String) -> String {
return "yes we have localized AnyObject via FallbackLanguage protocol"
}
}
Run Code Online (Sandbox Code Playgroud)
笔记
NSLocalizedString如果您在类实例之外调用,那么您就不走运了。| 归档时间: |
|
| 查看次数: |
1250 次 |
| 最近记录: |