无法将数据保存到Plist中?

时间:2014-04-19 02:03:07

标签: ios objective-c nsmutablearray plist nsmutabledictionary

我有一个NSMutableDictionary并且我添加了5个带有键的对象(纬度,经度,强度,图像,元图像)然后我尝试将其添加到NSMutableArray并写入NSMutableArray到.plist文件。但实际上它不是写作。我的.plist文件仍为空。

请检查我的代码:

paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:@"history.plist"];
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:filePath];

if([latitude length]>0 && [longitude length]>0){
[dictValue setObject:latitude forKey:@"latitude"];
[dictValue setObject:longitude forKey:@"longitude"];
}
[dictValue setObject:metaImage forKey:@"imageData"];
[dictValue setObject:image forKey:@"image"];
if([_intensity.text length]>0){
[dictValue setObject:_intensity.text forKey:@"intensity"];
}else{
    intensityAlert=[[UIAlertView alloc]initWithTitle:@"Beta App" message:@"Please select intensity." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
    [intensityAlert show];
}

if(fileExists){
    finalArray=[[NSMutableArray alloc]initWithContentsOfFile:filePath];
    [finalArray addObject:dictValue];
    NSLog(@"dd%@",dictValue);

}else{
    [finalArray addObject:dictValue];
    NSLog(@"new%@",finalArray);

}
[finalArray writeToFile:filePath atomically:YES];

之后我使用以下代码检查plist中的数据

   finalArray=[[NSMutableArray alloc]initWithContentsOfFile:filePath];
    NSLog(@"server%@",finalArray);

打印零值。

2 个答案:

答案 0 :(得分:0)

让我们试试:

  1. 在else中分配了finalArray:

    if(fileExists){
     finalArray=[[NSMutableArray alloc]initWithContentsOfFile:filePath];
     [finalArray addObject:dictValue];
     NSLog(@"dd%@",dictValue);
    }else{
     // let be sure that final array allocated : [[NSMutableArray alloc] initWith...]
     [finalArray addObject:dictValue];
     NSLog(@"new%@",finalArray);
    }
    
  2. metaImage或image必须以NSData格式保存

  3. 希望这会对你有所帮助。

答案 1 :(得分:0)

作为- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag的文件:

  

此方法以递归方式验证所有包含的对象是否为   属性列表对象(NSData,NSDate,NSNumber,   NSString,NSArray或NSDictionary)在写出文件之前,和   如果所有对象都不是属性列表对象,则返回NO,因为   结果文件不是有效的属性列表。

您可以尝试将图像保存到文件夹中,并将图像相对文件路径保存到plist文件中。