2011-08-18 53 views
1

我有一个非常大的属性列表文件(大约2 MB大),我需要在我的应用程序中使用它的数据。但是,由于其大小,将所有数据存储在某种类型的nsdictionary中将不是正常的。我的意思是这样的:大plist问题

NSString *path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"plist"]; 
someDictionary = [[NSDictionary alloc] initWithContentsOfFile:path]; 

你会建议从这个plist获取数据或使用,而不是plist文件。

+3

你应该尝试以某种方式拆分plist。如果没有将它加载到内存中,那么读取这个庞大的plist可能没有任何可行的方法。 此外,您可以尝试使用一种二进制格式来序列化plist,这可能比纯文本更有效率。 – mrueg

回答

2

在配置应用程序之前,我不会对此进行优化。使用2MB的内存听起来很多,但有些游戏仅仅为声音和图像加载多个内存。如果你的应用程序都是关于那2MB的数据,那么我认为把它加载到内存并使用它是完全正确的。

如果另一方面加载速度太慢,那么您可能需要考虑使用NSKeyedArchiverNSKeyedUnarchiver加载您的数据。它们比加载plist更快,并且如果可以将它分成逻辑部分,则可以选择性地加载数据块。

另一种选择当然是使用SQLite或核心数据。这些是数据“表格”的理想选择。两者都可以处理大文件。