0

我正在开发一个包含 5 个plist文件的应用程序。我想将所有这些文件保存在文档目录中。因为我想动态地向它们添加数据。我正在使用创建一个 plist 路径

从中检索数据plist

NSMutableArray *pathsArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *docpath = [pathsArray objectAtIndex:0];
NSString *scorePlistPath = [docpath stringByAppendingPathComponent:@"highScores.plist"];

if (![[NSFileManager defaultManager] fileExistsAtPath:scorePlistPath]) {
    scorePlistPath = [[NSBundle mainBundle] pathForResource:@"highScores" ofType:@"plist"];
}
highScoreArray = [[NSMutableArray alloc]initWithContentsOfFile:scorePlistPath];

将数据写入plist

scorePlistPath = [docpath stringByAppendingPathComponent:@"highScores.plist"];

[highScoreArray writeToFile:scorePlistPath atomically:YES];

现在我想plists在文档目录中再添加一个.. 不在 Bundle 中。我怎样才能做到这一点..?

4

1 回答 1

0

以编程方式,您无法将文件添加到应用程序包中,因为您没有权限,并且从Documents文件夹中保存或加载文件并不是什么大问题:

首先,您需要定义文件所在的 URL :

NSString *_filename = @"myOwn.plist";
NSURL *_resourceURL = [[[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject] URLByAppendingPathComponent:_fileName];

然后你可以保存文件

NSArray *_array = // your array as you defined
[_array writeToURL:_resourceURL atomically:true];

并且可以随时再次加载文件

NSData *_plistData = [NSData dataWithContentsOfFile:[_resourceURL path]];
NSArray *_loadedArray = [NSPropertyListSerialization propertyListFromData:_plistData mutabilityOption:NSPropertyListImmutable format:nil errorDescription:nil]; // the option or the format parameter might be set for your special wishes, so check the documentation, please

中提琴,它完成了。

更新#1

此代码在任何带有 的真实设备上都可以完美运行iOS4.3+,它从未在模拟器上进行过测试。

于 2012-07-19T12:03:53.503 回答