在设备上测试我的应用时,我遇到了一种奇怪的行为。这是我用来更新键值的功能,可以在我的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];
}
答案 0 :(得分:2)
我的猜测是你的代码随着时间的推移而发展,并且你已经在模拟器中存在了很长时间的现有字典。因此,该文件已存在很长时间了。
现在在设备上,如果文件不存在,则字典为nil,并且注释会被保存。
将您的代码更改为以下内容,我相信问题将得到解决:
NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
if(!plistDict) plistDict = [NSMutableDictionary new]; // I like using 'new'
NSLog(@"%@",plistDict);