如何在Xcode 4.3.2中创建plist文件

3
我正在尝试创建自己的plist文件,用于我的应用程序中。我参考了苹果文档来完成这个过程。
然而,我读到了一个信息,如果你创建自己的plist文件,你需要将它放在应用程序构建的资源文件夹中。问题是我的构建中没有资源文件夹...所以我想知道该怎么办?我在这里看到了一个人的回答(链接),他说只需将plist文件放在支持文件夹中即可,那这样做是否可以允许对plist文件进行读写操作呢?

1
一旦应用程序安装到设备上,就不能再写入应用程序包中。安装应用程序后,您需要将其复制到应用程序沙盒中,然后才能从那里读写。就 Xcode 项目而言,您几乎可以将文件放在任何地方。 - Paul.s
2个回答

5

如果您想通过Bundle访问Plist文件,最佳实践是将其复制到文档根目录以便读写。由于您没有写入权限,因此无法直接在Bundle中进行操作。我在这里提供了代码截图以及如何完成此操作的方法。

NSError *err;
NSFileManager *fileManager = [NSFileManager defaultManager];
//getting the path to document directory for the file
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentDir = [paths objectAtIndex:0];
NSString *path = [documentDir stringByAppendingPathComponent:@"YourFile.plist"];

//checking to see of the file already exist
if(![fileManager fileExistsAtPath:path])
{
    //if doesnt exist get the the file path from bindle
    NSString *correctPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"YourFile.plist"];
    //copy the file from bundle to document dir
    [fileManager copyItemAtPath:correctPath toPath:path error:&err];      
}

好的,谢谢。我之前找到了一个非常类似的教程。我在考虑创建一个控制器类来处理所有的plist操作,这样当我需要写入一些内容时,只需调用相应的类方法即可完成。你认为这是个好主意吗? - C.Johns
是的,这是一个好的实践方法,它可以避免代码重复。如果你需要帮助,我可以向你展示一个我创建的用于读写 plist 的类。 - darv
你会相信我已经成功地跟着教程做好了一切...但是现在我正在尝试将一个字典添加到plist的根字典中...并不确定如何设置值等等...我在这里有一个问题,你也许能帮助我解决.. :P http://stackoverflow.com/questions/10003856/how-to-add-values-to-a-dictionary-inside-a-dictionary-of-a-property-list - C.Johns

3

您可以将plist文件放在任何位置。

重要的是将其复制到bundle中。 因此,为了确保这一点,请检查 项目设置>构建阶段>复制包资源

您可以通过在项目导航器中左键单击项目来打开项目设置。


谢谢你的快速回复,很酷。好的,我现在明白了。我已经读到过它需要在捆绑包中,但并不确定包含了什么或者没有包含什么。 - C.Johns

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