【发布时间】:2017-08-21 17:57:58
【问题描述】:
我有一个 Strings.h 文件,其中包含许多条目,例如:
#define HIDE_WORD NSLocalizedString(@"Hide", @"the word on a button to Hide a screen that is showing")
如何使这些宏对 Swift 可用,或者如果我不能使宏可用,有什么替代方法?将我想要的宏包装在 Swift 中的类方法中的最佳方法是什么?
This answer 在我的情况下不起作用,因为 NSLocalizedString(@"Foo", @"Bar") 不是常量。
【问题讨论】:
-
您的链接只是指向问题。 stackoverflow.com/a/26709119/278842 不适合你吗?
-
使用宏来缩短代码是不好的代码风格。如果本地化正确完成,则一个字符串永远不会使用两次(绝对不会使用相同的注释),因此我认为甚至没有必要首先拥有一个全局字符串文件。正确的解决办法是到处手动写
NSLocalizedString。 -
@ChristopherOezbek 这就是我正在做的(那个不被接受的答案),我想知道是否有更好的东西。
-
@Sulthan 很有趣。如果我在代码中的多个位置对 UIBarButtonItem 标题使用“隐藏”一词会怎样?看起来评论会是一样的吗?在这种情况下,您的意思是我应该在 MyStyles 类中创建整个 UIBarButtonItem 实例化并调用它而不是使用标题的宏?如果出于某种原因我在 UIBarButtonItem 和 UIButton 中都使用了 Hide 这个词怎么办?
-
@AndrewJohnson 如果按钮总是做同样的事情,那么你没有理由在不同的地方重复创建模式。如果按钮在某处做了一些稍微不同的事情,那么它应该有一个单独的注释。维护单独的字符串文件的问题在于,当功能更改时,它几乎永远不会更新,因此您会得到未使用的字符串、过时的 cmets 等。
标签: objective-c swift