我正在製作Iphone飲料卡遊戲應用程序。 所有的卡都意味着不同的東西,我希望用戶能夠按下信息按鈕,然後顯示有關當前卡的信息的新屏幕。我怎樣才能使文檔加載文本,而不是使用一堆或長的字符串?從文件中加載文本
感謝
我正在製作Iphone飲料卡遊戲應用程序。 所有的卡都意味着不同的東西,我希望用戶能夠按下信息按鈕,然後顯示有關當前卡的信息的新屏幕。我怎樣才能使文檔加載文本,而不是使用一堆或長的字符串?從文件中加載文本
感謝
你可以看看的plist文件 - 他們可以很容易地加載到不同的集合對象,並在Xcode的plist編輯器進行編輯。
舉例來說,如果你組織你的數據字典,方便構造
+ (id)dictionaryWithContentsOfURL:(NSURL *)aURL
從NSDictionary的,因爲你需要將你提供儘可能多的方便字符串。
如果您認爲字符串主要是數據而不是UI元素,則此方法很有用。
更新:
由於@Alex尼科爾認爲,這裏是你如何能做到這在實踐中:
要創建plist文件:
en.lproj
中,以幫助本地化user1
)和值(比如「喬」)要閱讀內容:
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);
一個plist中,JSON字符串和SQLite數據庫走進一家酒吧......
哎呀!我的意思是這三個最明顯的選擇。 JSON字符串可能是最容易創建和「傳輸」的,儘管將整個內容加載到NSDictionary和/或NSArray中是最實際的,因爲每個字符串都被訪問時從文件讀取。
對於大量(數千個)字符串,SQLite數據庫是最通用,速度最快,存儲效率最高的,但需要花費一些努力來設置它。
在我的其他答案中,如果您的文本大部分被視爲數據,我建議使用字典。但是,如果您的字符串是UI元素(警告文本,窗口標題等),則可能需要查看strings
文件和NSBundle
對它們的支持。
字符串文件非常適合本地化,格式解釋爲here。
到App閱讀到您,使用這樣的:
NSString *text1 = NSLocalizedStringFromTable(@"TEXT1", @"myStringsFile", @"Comment");
如果你打電話給你的文件Localizable.strings
,你甚至可以用一個簡單的形式:
NSString *str1 = NSLocalizedString(@"String1", @"Comment on String1");
一個有益討論here - 有點舊,但仍然有用。
我還會提到如何在Xcode中創建Plist資源,以及如何將這樣的資源文件加載爲NSDictionary。 – 2011-12-25 22:54:49