我在资源文件中创建了一个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。
请告诉我我哪里弄错了。
答案 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的地方的完整路径和文件名。