将 NSMutableDictionary 保存到 plist 问题中
Posted
技术标签:
【中文标题】将 NSMutableDictionary 保存到 plist 问题中【英文标题】:Saving NSMutableDictionary into plist issue 【发布时间】:2012-09-22 11:46:31 【问题描述】:在设备上测试我的应用时,我遇到了一种奇怪的行为。这是我用来更新键值的函数,它在我的 iphone 模拟器上运行顺畅。确实很好。但是 plist 第 6 行的 nslog 在设备上返回 null。您对我做错的原因和原因有任何想法吗?提前谢谢你
-(void) updateData:(int)contacto campo:(int)campo
NSString *rootPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *plistPath = [rootPath stringByAppendingPathComponent:@"Data.plist"];
NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
NSLog(@"%@",plistDict);
switch (campo)
case 0:
veterinarioID = contacto;
[plistDict setValue:[NSNumber numberWithInt:veterinarioID] forKey:@"veterinario"];
NSLog(@"%d",veterinarioID);
break;
case 1:
peluqueriaID = contacto;
[plistDict setValue:[NSNumber numberWithInt:peluqueriaID] forKey:@"peluqueria"];
NSLog(@"%d",peluqueriaID);
break;
case 2:
residenciaID = contacto;
[plistDict setValue:[NSNumber numberWithInt:residenciaID] forKey:@"residencia"];
NSLog(@"%d",residenciaID);
break;
default:
break;
[plistDict writeToFile:plistPath atomically: YES];
【问题讨论】:
把 plistPath 放到控制台plistPath
的文件是否真的存在于设备上?
这是 plistPath 的控制台输出:2012-09-22 15:14:05.710 testAPP[6500:12503] /Users/Samuel/Library/Application Support/iPhone Simulator/5.1/Applications/FC9C7FC7 -BAFB-4EBC-95FC-D9D256E58EA5/Documents/Data.plist
和设备 plistPath 的控制台:2012-09-22 15:16:38.142 testAPP[4922:707] /var/mobile/Applications/EEB375D7-E39B-4456-9F19-29AEC9401A79/Documents/Data .plist
【参考方案1】:
我的猜测是您的代码随着时间的推移而发展,并且您在模拟器中已经有一个现有的字典很长时间了。因此,该文件已经存在很长时间了。
现在在设备上,如果文件不存在,则字典为 nil,并且记录会永远保存。
将您的代码更改为以下内容,我相信问题将得到解决:
NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
if(!plistDict) plistDict = [NSMutableDictionary new]; // I like using 'new'
NSLog(@"%@",plistDict);
【讨论】:
大卫,你的“新”方法成功了。感谢您的帮助;)以上是关于将 NSMutableDictionary 保存到 plist 问题中的主要内容,如果未能解决你的问题,请参考以下文章
将 NSMutableDictionary 保存到 plist iOS
将 NSMutableDictionary 保存到 plist 问题中
读取和写入 NSMutableDictionary 到 plist 文件