存储在plist中的数据在模拟器中工作但不在设备中工作

时间:2010-04-12 16:48:05

标签: iphone plist

我是iphone开发的新手。我已经创建过像我之前post这样的plist。它在模拟器中运行良好,但在设备中没有。请帮帮我。谢谢。

编辑:我从plist获取保存的值并检查条件。当我使用模拟器时,它可以工作但不在设备中。

1 个答案:

答案 0 :(得分:2)

(1)您无法写入iPhone资源文件夹中的文件。它是手机安全系统的一部分,可防止恶意代码在安装后改变应用程序。

(2)如果要将新数据保存到文件,则需要将文件写入其中一个自动生成的文件夹。只要在设备或模拟器上安装了iPhone应用程序,系统就会创建一组默认文件夹。

(3)您想要写入Preferences文件夹或Documents文件夹。如果数据涉及应用程序的操作,请将其写入首选项。如果它包含写入Documents的用户数据。

设定:

NSArray *sysPaths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory,NSUserDomainMask, YES); 
NSString *prefsDirectory = [[sysPaths objectAtIndex:0] stringByAppendingPathComponent:@"/Preferences"];

文件:

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

假设您要读取默认首选项plist文件,进行一些更改,然后将其保存为首选项文件夹。

NSString *plistPath=[[NSBundle mainBundle] pathForResource:@"PlistFileName" ofType:@"plist"];
NSMutableArray *defaultPrefs=[[NSMutableArray alloc] initWithContentsOfFile:plistPath];
//... modify defaultPrefs
NSString *outputFilePath=[prefsDirectory stringByAppendingPathComponent:@"alteredPrefs.plist"];
[defaultPrefs writeToFile:outputFilePath atomically:NO];