节省了大量的词典和数组

时间:2011-10-02 18:39:40

标签: objective-c cocos2d-iphone

我的游戏附带了许多包含许多词典,数组等的.plist文件。它们是关于每个党员的统计信息,信息等。

单身人士负责阅读所有这些文件,并为我的游戏提供必要的数据。

在许多方面,游戏将从单身人士中编辑这些值,如英雄级别,统计数据等。

最终,玩家将获得“保存”游戏的选项。我最初的想法是基本上告诉单身人士用新编辑的数据“覆盖”项目中的.plist文件(新数据可能在统计条目等方面有变化,甚至是代表新党员等的全新词典等)和完成。

但是,我不知道该怎么做,或者即使有可能。

我听说过NSUserDefaults,但我不知道它是否适合我的目标,考虑到词典和数组的数量非常大,并且可以保持将来添加更多的词典和数组。想象一下,例如,党可以拥有任意数量的成员。

*注意:没有多个保存文件/配置文件。当您按保存时,它会保存,而不会询问任何其他内容。

1 个答案:

答案 0 :(得分:2)

NSUserDefaults不适用于任何大量数据。只需将plist写入文档目录,指定atomic:YES即可确保写入整个文件。

- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
  

如果是,则将数组(或字典)写入辅助文件,并且   然后将辅助文件重命名为path。如果否,则数组为   直接写到路径。 YES选项保证路径,如果它   存在,即使系统崩溃也不会被破坏   写作期间。

此方法适用于NSArrayNSDictionary

获取文档目录:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:fileName];
BOOL status = [NSDictionary writeToFile:filePath atomically:YES];

NSDictionary可能有10个NSArray,具体取决于plist的顶部元素。

考虑使用CoreData。