从文件加载文本

时间:2011-12-25 11:30:31

标签: iphone objective-c ios cocoa-touch

我正在制作Iphone饮水卡游戏应用。 所有的卡都意味着不同的东西,我希望用户能够按下信息按钮,然后显示一个新屏幕,其中包含有关当前卡的信息。如何创建一个文档来加载文本,而不是使用一堆og长字符串?

由于

3 个答案:

答案 0 :(得分:3)

您可以查看plist文件 - 它们可以很容易地加载到各种集合对象中,并使用Xcode中的plist编辑器进行编辑。

例如,如果您将数据组织为字典,便利构造函数

+ (id)dictionaryWithContentsOfURL:(NSURL *)aURL
来自NSDictionary的

将为您提供所需数量的易于访问的字符串。

如果您认为字符串主要是数据而不是UI元素,则此方法很有用。

<强>更新

正如@Alex Nichol所建议的,以下是你在实践中如何做到这一点:

创建一个plist文件:

  • 在Xcode项目中,例如在Supporting Files组中,选择New File&gt;资源&gt;物业清单
  • 您可以将文件保存在en.lproj中,以帮助进行本地化
  • 在“属性”列表编辑窗格中,选择“添加行”(或只需按回车键)
  • 输入密钥名称(例如user1)和值(例如“Joe”)

阅读内容:

NSURL *plistURL = [[NSBundle mainBundle] URLForResource:@"Property List" withExtension:@"plist"];

NSLog(@"URL: %@", plistURL);

NSDictionary *strings = [NSDictionary dictionaryWithContentsOfURL:plistURL];

NSString *user1 = [strings objectForKey:@"user1"];

NSLog(@"User 1: %@", user1);

答案 1 :(得分:0)

一个plist,一个JSON字符串和一个SQLite数据库走进了一个吧......

糟糕!!我的意思是那些是最明显的三个选择。 JSON字符串可能是最容易创建和“传输”的,尽管将整个事物加载到NSDictionary和/或NSArray中是最实际的,而不是在访问每个字符串时从文件读取。

对于非常大量(数千)的字符串,SQLite数据库是最常用的,速度/存储效率最高,但需要花费一些精力来设置它。

答案 2 :(得分:0)

在我的另一个答案中,如果您的文本主要被视为数据,我建议使用字典。但是,如果您的字符串是UI元素(警报文本,窗口标题等),您可能需要查看strings个文件和NSBundle对它们的支持。

字符串文件非常适合本地化,格式说明为here

要将它们读入您的应用,请使用以下内容:

NSString *text1 = NSLocalizedStringFromTable(@"TEXT1", @"myStringsFile", @"Comment");

如果您调用文件Localizable.strings,您甚至可以使用更简单的格式:

NSString *str1 = NSLocalizedString(@"String1", @"Comment on String1");

有用的讨论here - 有点旧,但仍然有用。