作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想在 swift 2.3 中取消定义或重写 NSLocalizedString
,我搜索了很多相关内容,最后我在 Objective C 中找到了一种方法来执行此操作,如下所示。
#undef NSLocalizedString
#define NSLocalizedString(key,_comment) your_function_name
我想快速实现这个功能。我只知道 NSLocalizedString
是 NSBundle.h
中的宏,用于 Objective C。所以我们可以重新定义它。但是对于 swift 我们无法实现。我只想重新定义或为 swift 覆盖 NSLocalizedString 函数。请帮我解决这个问题。我们将不胜感激。
最佳答案
NSLocalicedString
是 Swift 中的一个全局方法。
全局函数不能被覆盖,但可以重新定义。要重新定义该方法,只需声明一个新版本。所选功能将基于范围。例如:
func NSLocalizedString(_ key: String, tableName: String? = nil, bundle: Bundle = Bundle.main, value: String = "", comment: String) -> String {
return "redefined version in the project"
}
class Test {
func NSLocalizedString(_ key: String, tableName: String? = nil, bundle: Bundle = Bundle.main, value: String = "", comment: String) -> String {
return "redefined version in Test"
}
func getLocalizedString() -> String{
return NSLocalizedString("test", comment: "t")
}
}
class Test2 {
func NSLocalizedString(_ key: String, tableName: String? = nil, bundle: Bundle = Bundle.main, value: String = "", comment: String) -> String {
return "redefined version in Test2"
}
func getLocalizedString() -> String{
return NSLocalizedString("test", comment: "t")
}
}
NSLocalizedString("test", comment: "t") //will return "redefined version in the project"
Test().getLocalizedString() //will return "redefined version in Test"
Test2().getLocalizedString() //will return "redefined version in Test2"
关于swift - 如何在 swift 2.3 中使用#undef 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47053536/
我是一名优秀的程序员,十分优秀!