问题描述:
今天做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