0

我正在开发一个包含许多图像的 iOS 应用程序。这些图像与 Show 对象和 Band 对象相关联。我对 iOS 开发相当陌生

在服务器上,节目和乐队与图像列表相关联。目前我正在使用以下信息存储图像:

height:integer width:integer imageType:string imageData:binary

第一个问题是:应该有更多吗?

其次,我使用 Core Data 持久化 Show 和 Band 对象。我不想保留图像,因为我会很快耗尽内存。我会将它们存储在缓存目录中。我的第二个问题是:Show 和 Band 对象应该如何跟踪图像?我是否应该在模型中有一个与 Shows 和 Bands 有很多关系的 Image 对象。但是这些 Image 对象可能只包含高度、宽度、imageType 和缓存图像应该所在的路径。我的想法是,如果在缓存目录中找不到它,它会从服务器获取 imageData。

这样做的正确方法是什么?

更新

我还计划在获取缓存版本之前使用 HEAD ping 服务器以检查 imageData 是否已更新。

4

1 回答 1

1

实际上,您可以直接使用 Core Data 存储图像,而根本不必弄乱文档。

这已经在其他地方得到了回答,但无论如何我都会把代码放在这里:

保存:

NSData *imageData = UIImagePNGRepresentation(yourUIImage);
[newManagedObject setValue:imageData forKey:@"image"];

并加载:

NSManagedObject *selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];
UIImage *image = [UIImage imageWithData:[selectedObject valueForKey:@"image"]];
[[newCustomer yourImageView] setImage:image];

您应该对数据进行建模的方式取决于图像与乐队/节目之间的关系。

节目和乐队是否都与多个图像相关?一个节目可以有与多个乐队相关的图像吗?

最终,您可能希望拥有一个Image与乐队/节目具有一对一或一对多关系的核心数据实体,具体取决于您对这些问题的回答。您还需要添加反向关系,例如,当您查找节目时,您还可以访问与其关联的图像集。

如果您提供有关对象之间关系的更多详细信息,可能会更容易为您提供帮助。

于 2012-06-23T22:21:16.940 回答