我们如何在 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 周围添加带阴影的边框

在舞台内添加带参数的构建?

UITableViewCell如何添加带圆角的实心边框

在 bash 中,如何添加带前导零的整数并维护指定的缓冲区

如何使用C#向MS Word添加带格式的字段

我们如何在 NSMutableArray 中添加带有 Image 作为对象的 NSMutableDictionary 并将这个数组写入 Plist