如何在 Objective-C 中保存图像列表

Posted

技术标签:

【中文标题】如何在 Objective-C 中保存图像列表【英文标题】:How does one save a list of images in Objective-C 【发布时间】:2012-01-07 21:29:38 【问题描述】:

在我的代码中,我有一个项目是我希望保存的交替字符串和图像的列表。我知道如何以 JPEG 表示形式保存单个图像,但是在 Objective-C 中是否有一种我不知道的简单有效的方法来保存所有这些项目(或者至少是图像,因为我可以自己处理字符串)同时维持秩序?

例如:item 1 ("hi", image, "how", image, "are", image), item2("this", image, "is", image)

保持物品顺序对我来说并不重要,但列表中的顺序很重要。想到的第一件事就是简单地保存每一个图像,并有一个算法来创建,然后记住它们的图像名称,然后保存并加载文本列表。有没有更简单的方法来做到这一点?我真的可以将数组本身保存为 plist 并继续我的快乐吗? (我只见过带字符串的例子)

【问题讨论】:

你想在什么意义上“保存”图像?将其写入文件系统? 【参考方案1】:

我相信我明白你的目的。您想保存一个项目数组,每个项目都包含一个包含图像和字符串的对象数组。如果这是准确的,那么您将数组保存到 plist 的想法是正确的。

简而言之,您将创建对象的 NSDictionaries 并保存它们的数组。像这样:

在您的对象中,您将有一个类似于此的方法:

- (NSDictionary *)dictionaryOfItemData;

    NSMutableDictionary * mutableDictionary = [[NSMutableDictionary alloc] init];


    [mutableDictionary setObject:imageName 
                          forKey:@"imageName"];

    [mutableDictionary setObject:UIImagePNGRepresentation([self image]) 
                          forKey:@"imageData"];


    return mutableDictionary;

然后您可以将这些数组(或数组数组,或基于文件大小问题、需要加载等的任何内容)保存在适当的位置:

[[arrayOfDictionaries description] writeToFile:path
                                    atomically:YES 
                                      encoding:NSUTF8StringEncoding 
                                         error:NULL];

这为您提供了 plist,您可以通过使用数据创建图像并从字典中设置图像名称来加载和水合。

~祝你好运

【讨论】:

以上是关于如何在 Objective-C 中保存图像列表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Objective-C 从 IOS Cordova 中的设备(本地数据库)中删除图像

Objective-c:如何在启用纵向锁定的情况下在捕获后修复图像方向

如何从我的数组列表中删除 __ob__: Observer?

如何在 Objective-C 中使用正则表达式验证 IP 地址?

如何使用objective-c将图像存储在缓存中

如何将 RxSwift 用于 Objective-C 和 Swift 项目?