使用设备将新项添加到plist

时间:2011-05-16 16:28:03

标签: ios4

我在资源文件中创建了一个plist,我正在向plist添加项目 对于exm:

    plistarray=[NSMutableArray arrayWithContentsOfFile:@"/Users/mangomac2/Desktop/chat module/complete (iphoneDesign) 2/picture-vide 2/Data.plist"];
    if (plistarray==nil)

        plistarray=[NSMutableArray array];
    [plistarray addObject:datadict];
    [plistarray writeToFile:@"/Users/mangomac2/Desktop/chat module/complete (iphoneDesign) 2/picture-vide 2/Data.plist" atomically:YES];
    [datadict release];

我的数据正在添加到plist但是无论何时我将代码上传到设备,它都不会添加到plist而不会检索到plist。

请告诉我我哪里弄错了。

1 个答案:

答案 0 :(得分:0)

首先,您正在对应用程序的路径进行硬编码,而不考虑应用程序将安装在设备模拟器上的不同位置,以及可能位于每个不同设备上的不同位置。其次,您似乎正在尝试更新应用程序包中的文件;这是不允许的,如果iOS使用文件系统权限强制执行应用程序包的不可写性,则可能会失败。

要在捆绑包中找到文件,您应该使用NSBundle类的相应方法。例如,要获取文件Data.plist的路径,您可以使用[[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]

如果您想要修改此文件,则必须先将其复制到可写位置(然后将来从此位置而不是从您的包中读取)。您可以使用NSSearchPathForDirectoriesInDomains获取适当的目录。例如,[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]将为您提供应用文档目录的路径。然后,您可以使用[directory stringByAppendingPathComponent:@"Data.plist"]之类的内容来获取可以存储Data.plist的地方的完整路径和文件名。