我的游戏附带了许多包含许多词典,数组等的.plist文件。它们是关于每个党员的统计信息,信息等。
单身人士负责阅读所有这些文件,并为我的游戏提供必要的数据。
在许多方面,游戏将从单身人士中编辑这些值,如英雄级别,统计数据等。
最终,玩家将获得“保存”游戏的选项。我最初的想法是基本上告诉单身人士用新编辑的数据“覆盖”项目中的.plist文件(新数据可能在统计条目等方面有变化,甚至是代表新党员等的全新词典等)和完成。
但是,我不知道该怎么做,或者即使有可能。
我听说过NSUserDefaults,但我不知道它是否适合我的目标,考虑到词典和数组的数量将非常大,并且可以保持将来添加更多的词典和数组。想象一下,例如,党可以拥有任意数量的成员。
*注意:没有多个保存文件/配置文件。当您按保存时,它会保存,而不会询问任何其他内容。
答案 0 :(得分:2)
NSUserDefaults不适用于任何大量数据。只需将plist写入文档目录,指定atomic:YES
即可确保写入整个文件。
- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
如果是,则将数组(或字典)写入辅助文件,并且 然后将辅助文件重命名为path。如果否,则数组为 直接写到路径。 YES选项保证路径,如果它 存在,即使系统崩溃也不会被破坏 写作期间。
此方法适用于NSArray
和NSDictionary
,
获取文档目录:
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。