我已经学习了很多教程,用谷歌搜索了这个问题,但无法理解为什么我无法将数据保存到属性列表中
在我的整个研究过程中,我能够确定“writeToFile”返回 0,这可能是由于自定义数据类型(类)造成的,但我试图保存的只是一个与属性列表兼容的 NSNumber。
请帮忙,因为我不知道为什么这不会保存,我正在 iPhone 模拟器中测试,~/Documents 文件夹中没有创建文件
问候
- (void)saveData{
NSLog(@"*** SAVING DATA ***");
DataManager *datamgr = [DataManager sharedManager];
NSString *error;
//get path of data plist in users Document directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
NSNumber *gems = [NSNumber numberWithInt:datamgr.gemCount];
//create arrays for data and keys
NSArray *data = [NSArray arrayWithObjects:gems, nil];
NSArray *keys = [NSArray arrayWithObjects:@"Gems", nil];
//create dictionary with data against keys
NSDictionary *plistDict = [NSDictionary dictionaryWithObjects:data forKeys:keys];
NSData *plistData = [NSPropertyListSerialization dataFromPropertyList:plistDict
format:NSPropertyListXMLFormat_v1_0
errorDescription:&error];
//write file from dictionary
if(plistData) {
if([plistData writeToFile:plistPath atomically:YES] != 0){
NSLog(@"write file to plist");
}
}
else {
NSLog(@"%@",error);
}
}
最佳答案
我唯一能看出错误的是你在搜索什么目录。尝试更改:
//get path of data plist in users Document directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES) objectAtIndex:0];
对此:
//get path of data plist in users Document directory
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
我还建议在物理设备上调试,模拟器没问题,但在某些情况下它确实有自己的问题。
关于ios - 数据未保存到属性列表 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23137237/