在objective-c(iPhone)中抽象出字符串

前端之家收集整理的这篇文章主要介绍了在objective-c(iPhone)中抽象出字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个 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提取的.

祝好运

猜你在找的C&C++相关文章