【发布时间】:2014-04-19 02:03:06
【问题描述】:
嗨,我有一个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);
它打印零值。
【问题讨论】:
-
metaImage和image是什么数据类型?如果不先将NSData转换为NSData,就无法将UIImage对象存储在plist 中。 -
uiimage,所以我需要将其转换为 nsdata ryt?
-
如果“ryt”是指“正确”,那么是的,您需要将
UIImage转换为NSData并将NSData放入字典中。 -
喜欢这个 imageData= UIImageJPEGRepresentation(image,0.0);
-
可能是因为文件从未被写入,因为您试图在数组中存储非 plist 值。检查
writeToFile:atomically:的返回值。如果它返回NO,则表示文件未保存。数组中只能有 plist 兼容的值。
标签: ios objective-c nsmutablearray plist nsmutabledictionary