如何将一个plist文件从iOS应用的bundle文件夹移动到文档文件夹中

3

我想知道如何在应用程序第一次运行时将plist文件从bundle移动到文档文件夹,因为我需要它。但我不知道如何操作,请帮助我。


在这里回答:https://dev59.com/mWkw5IYBdhLWcg3wiq-s - XCool
3个回答

4
如果您的属性列表名称为“friends”,只需使用以下代码(它将查找文件是否存在并复制)
NSFileManager *fileManger=[NSFileManager defaultManager];
NSError *error;
NSArray *pathsArray = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES);

NSString *doumentDirectoryPath=[pathsArray objectAtIndex:0];

NSString *destinationPath= [doumentDirectoryPath stringByAppendingPathComponent:@"friends.plist"];

NSLog(@"plist path %@",destinationPath);    
if ([fileManger fileExistsAtPath:destinationPath]){
    //NSLog(@"database localtion %@",destinationPath);
    return;
}
NSString *sourcePath=[[[NSBundle mainBundle] resourcePath]stringByAppendingPathComponent:@"friends.plist:];

[fileManger copyItemAtPath:sourcePath toPath:destinationPath error:&error];

这将从资源中复制plist文件到文档目录。

2
这个函数应该能解决问题。
- (void)copyPlist {
    NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"myplist" ofType:@"plist"];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];

    [[NSFileManager defaultManager] copyItemAtPath:plistPath toPath:documentsDirectory error:nil];
}

[[NSFileManager defaultManager] copyItemAtPath:plistPath toPath:documentsDirectory error:nil];这一行中,您不必须使用NSError参数,但它可能对调试有用。


0

提醒一下...这段话来自http://samsoff.es/posts/iphone-plist-tutorial“现在使用JSON比Plists更受欢迎,因为JSON解析器的速度已经大大提高。它们实际上比二进制plist还要快(这太疯狂了)。无论如何,请不要使用plists作为您的API。生成它们很慢且不可靠。您应该使用JSON。就是这样。”


1
如果方便比速度更重要怎么办?如果使用Xcode内置工具比手动编辑JSON文件更有趣且更可靠怎么办?如果属性列表的类型安全性是一个重要因素怎么办? - Till
1
我不相信那篇文章。二进制plist比像JSON这样基于ASCII的格式更紧凑,因此它们在网络上传输时传输速度更快。它们以二进制格式存储值,因此无需将其从字符串转换为布尔值/浮点数/整数等。它们不使用字符作为分隔符等等。我看过一位我非常尊重的高级开发人员的演示,他比较了plist、JSON和XML。JSON解析速度比XML略快,并且需要更少的内存,但是二进制plist至少比两者快10倍。那是大约一年前,在这篇虚假文章发布之后。 - Duncan C
哦,很有趣的Duncan。如果可能的话,想看一下那个演示文稿的链接!此外,Till,我在引用别人的作品。你的评论似乎有点幼稚。 - sager89

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接