1

在设备上测试我的应用程序时出现奇怪的行为。这是我用来更新键值的函数,它在我的 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];

}
4

1 回答 1

2

我的猜测是您的代码随着时间的推移而发展,并且您在模拟器中已经有一个现有的字典很长时间了。因此,该文件已经存在了很长时间。

现在在设备上,如果文件不存在,则字典为 nil,并且注释将永远保存。

将您的代码更改为以下内容,我相信问题将得到解决:

NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath];
if(!plistDict) plistDict = [NSMutableDictionary new]; // I like using 'new'
NSLog(@"%@",plistDict);
于 2012-09-22T12:07:19.607 回答