我正在开发一个
iphone应用程序,我想知道抽象字符串的正确做法是什么.我习惯于创建一个包含常量字符串的文件,并在我的应用程序中引用它们(例如url,端口号甚至按钮标签).我想知道这是否被认为是Obj-C中的好习惯,如果是这样,最好的办法是什么?我应该用字符串创建一个类吗?或者使用“.strings”文件?
p.s我可能会在以后本地化我的应用程序.我没有调查过如何做到这一点,但我想在我开发的时候抽出我的弦是一个好主意.
谢谢!
MGA
解决方法
通常,您与NSBundle接口.您使用字符串来读取字符串的本地化版本(从本地化的字符串文件加载).
有些人使用一些宏来减轻语法,这些宏都以NSLocalizedString为前缀. NSLocalizedString实现使用NSBundle.
imo,你应该使用字符串常量来识别你读取的本地化字符串(就像你应该使用字典和对象键).
你可以使用这个表单声明你的常量(假设objc):
extern NSString* const MONAppString_Download;
并定义如下:
NSString* const MONAppString_Download = @"Download";
然后使用:访问它:
NSString * tableName = nil; // << using the default NSString * localized = [[NSBundle mainBundle] localizedStringForKey:MONAppString_Download value:MONAppString_Download // << return the string using the default localization if not found table:tableName];
有时它有助于创建包装函数以减少噪音,尤其是当您在许多地方使用它们时:
// @return what's set to the above variable named 'localized'. NSString * MONLocalized_Download();
然后你设置你的字符串文件就像一张地图,每个你支持的本地化一个.
因此,只要您需要读取用户可见的字符串,就可以使用上面的表单.还要考虑还有其他资源可以本地化(笔尖,图像,PDF等),您可以将它们与您的应用程序捆绑在一起.如果你愿意,这里的大部分工作也是由CFBundle的NSBundle提取的.
祝好运