Sum*_*wal 5 localization nslocalizedstring preprocessor-directive swift xcode8.1
我想NSLocalizedString在swift 2.3中取消定义或覆盖,我搜索了很多关于它的内容,最后我在Objective C中找到了一种方法,如下所示.
#undef NSLocalizedString
#define NSLocalizedString(key,_comment) your_function_name
Run Code Online (Sandbox Code Playgroud)
我想在swift中实现这个功能.我只知道Objective C中的NSLocalizedString一个宏.NSBundle.h所以我们可以重新定义它.但是对于swift我们无法实现这一点.我只想重新定义或覆盖swift的NSLocalizedString函数.请帮我解决这个问题.任何帮助都会不胜感激.
Cod*_*256 -1
#undef是一个C 预处理器指令,而 Swift不支持任何预处理器指令#define,包括用于 的复杂宏NSLocalizedString。事实上,它的导入方式为:
/// Returns a localized string, using the main bundle if one is not specified.
public func NSLocalizedString(_ key: String, tableName: String? = default, bundle: Bundle = default, value: String = default, comment: String) -> String
Run Code Online (Sandbox Code Playgroud)
但是,您只需编写自己的实现即可轻松完成预期的行为,而应该自动使用该实现。例如:
public func NSLocalizedString(_ key: String, tableName: String? = nil, bundle: Bundle = Bundle.main, value: String = "", comment: String) -> String {
// Do your magic here!
return "test"
}
Run Code Online (Sandbox Code Playgroud)
但请不要这样做。最好创建一个不同的函数。否则,将不清楚你的函数是否是正在使用的函数,或者你可能会得到:error: ambiguous use of 'NSLocalizedString(_:tableName:bundle:value:comment:)'如果你需要更改签名,即使你只是想让某些东西可选。
| 归档时间: |
|
| 查看次数: |
292 次 |
| 最近记录: |