我们如何在 NSMutableArray 中添加带有 Image 作为对象的 NSMutableDictionary 并将这个数组写入 Plist
Posted
技术标签:
【中文标题】我们如何在 NSMutableArray 中添加带有 Image 作为对象的 NSMutableDictionary 并将这个数组写入 Plist【英文标题】:How can we add NSMutableDictionary with Image as object in NSMutableArray and write this array in Plist 【发布时间】:2014-04-03 11:51:22 【问题描述】:我想将 UIImage 存储在 NSMutableDictionary 中。
NSData *imgData = UIImagePNGRepresentation(picture.image);
[studDict setValue:imgData forKey:@"Photo"];
在哪里, studDict 是 NSMutableDictionary。 而 picture 是 UIImageView。
并将此字典添加作为对象存储在 NSMutableArray 中。
[studArrayPlist addObject:detailDict];
在哪里, studArrayPlist 是 NSMutableArray。 detailDict 是带有 UIImage 的 NSMutableDictionary。
这个 NSMutableArray 写在 plist 中。
[studArrayPlist writeToFile:plistPath atomically: TRUE];
在哪里, studArrayPlist 是 NSMutableArray 存储 NSMutableDictionary 和 UIImage。
如果不写在 plist 中,这将不起作用。 并且不要给出任何错误。 我也想从 plist 中检索数组中的所有数据。
【问题讨论】:
尝试将“studArrayPlist”放入另一个字典,然后将该字典写入 plist,因为您只能将字典(根对象)写入 plist ***.com/questions/2767465/… 【参考方案1】:检查对象是否被添加到字典&数组中。如果没有则分配NSMutableArray & NSMutableDictionary。
NSMutableDictionary *studDict=[[NSMutableDictionary alloc] init];
[studDict setValue:imgData forKey:@"Photo"];
NSMutableArray * studArrayPlist =[[NSMutableArray alloc] init];
[studArrayPlist addObject:studDict];
[studArrayPlist writeToFile: plistPath atomically:YES];
【讨论】:
【参考方案2】:是的,我正在这样做,它可以正常工作,但有时工作缓慢。
现在, 用于将图像存储为数据
NSMutableDictionary *studDict=[[NSMutableDictionary alloc] init];
NSData *imgData = UIImagePNGRepresentation(picture.image);
[studDict setValue:imgData forKey:@"Photo"];
NSMutableArray * studArrayPlist =[[NSMutableArray alloc] init];
[studArrayPlist addObject:studDict];
[studArrayPlist writeToFile: plistPath atomically:YES];
并将图像作为数据检索,
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES);
// get documents path
NSString *documentsPath = [paths objectAtIndex:0];
// get the path to our Data/plist file
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"StudDetail.plist"];
//Storing all the records (NSDictionary objects) in array from plist.
studeInfo = [[NSMutableArray alloc]initWithContentsOfFile:plistPath];
UIImage *img = [[UIImage alloc] initWithData:[[studeInfo objectAtIndex:"your index"] objectForKey:@"Photo"]];
[person setImage:img];
[img release];
【讨论】:
以上是关于我们如何在 NSMutableArray 中添加带有 Image 作为对象的 NSMutableDictionary 并将这个数组写入 Plist的主要内容,如果未能解决你的问题,请参考以下文章
Android LinearLayout:在 LinearLayout 周围添加带阴影的边框
我们如何在 NSMutableArray 中添加带有 Image 作为对象的 NSMutableDictionary 并将这个数组写入 Plist