plist保存问题

问题描述
今天做Denizen Box,需要收集用户资料,用[NSDictionary writeToFile: atomically:]方法保存。模拟上此函数成功,返回true;真机上此函数失败,返回false。

问题分析
代码如下:

NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"];
bool result=[addDictionary writeToFile:plistPath atomically:YES];

代码没有变化,而真机就是写入不了,猜想是权限问题。

问题解决
把代码改为:

NSArray *storeFilePath = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *doucumentsDirectiory = [storeFilePath objectAtIndex:0];
NSString *plistPath=[doucumentsDirectiory stringByAppendingPathComponent:@"data.plist"];
bool result=[addDictionary writeToFile:plistPath atomically:YES];

问题解决了。

事后发现,路径不一样:
修改前:

/var/mobile/Applications/A528A4DE-F391-4247-8C5D-9386DC415A00/Box.app/data.plist

修改后:

/var/mobile/Applications/A528A4DE-F391-4247-8C5D-9386DC415A00/Documents/data.plist