gpt4 book ai didi

swift - 如何在 swift 2.3 中使用#undef 指令

转载 作者:搜寻专家 更新时间:2023-10-31 08:07:44 24 4
gpt4 key购买 nike

我想在 swift 2.3 中取消定义或重写 NSLocalizedString,我搜索了很多相关内容,最后我在 Objective C 中找到了一种方法来执行此操作,如下所示。

#undef NSLocalizedString
#define NSLocalizedString(key,_comment) your_function_name

我想快速实现这个功能。我只知道 NSLocalizedStringNSBundle.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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com