我有一个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);
打印零值。
答案 0 :(得分:0)
让我们试试:
在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);
}
metaImage或image必须以NSData格式保存
希望这会对你有所帮助。
答案 1 :(得分:0)
作为- (BOOL)writeToFile:(NSString *)path atomically:(BOOL)flag
的文件:
此方法以递归方式验证所有包含的对象是否为 属性列表对象(NSData,NSDate,NSNumber, NSString,NSArray或NSDictionary)在写出文件之前,和 如果所有对象都不是属性列表对象,则返回NO,因为 结果文件不是有效的属性列表。
您可以尝试将图像保存到文件夹中,并将图像相对文件路径保存到plist文件中。