iOS:存储视图的实践

时间:2015-04-01 18:03:26

标签: ios swift core-data

我的应用允许用户自定义(将UILabelUIImage添加到UIView。我希望用户能够检索相同的视图(所有内容都保持不变定义它的位置。我正在考虑CoreData。我想我可以在Dictionary<String, AnyObject>中存储所有必要的内容,包括子视图的框架以及用户放在该视图内的任何内容(可以是图像或文本,具体取决于它是否是UILabelUIImage。。我脑子里的存储结构如下:

Dictionary<String, AnyObject>

  • “frame”:CGRect
  • “image”:UIImage或“标签”:UILabel

一旦我准备好了,我就可以将字典转换为NSData并将其填充到核心数据中。 但这是存储视图的正确方法吗?对此有何选择/建议?谢谢!

================================= UPDATE ============= ==================== 我最终使用的结构看起来像这样:

NSDictionary

  • “frame”:CGRect
  • “content”:UIImage在磁盘/文本上的路径(用于标签)
  • “type”:“Img”/“Txt”

由于我正在使用CoreData,我只需要使我的“视图”对象扩展NSManagedObject并具有字典属性。这样,就不再需要编码过程了。

1 个答案:

答案 0 :(得分:1)

您创建字典的方法是公平的。在许多方面,最好创建一个自定义类(或一组),因为它们更具体,并提供更多的编译器检查。

在任何一种情况下,将商店归档到数据都是正确的方法(使用NSCoding)。

获得数据后,应将其直接保存到磁盘而不是使用Core Data。存储单个大型二进制数据blob时,Core Data不提供任何优势。

正确使用核心数据只会在您想要存储许多视图并且无需同时重新加载所有视图时帮助您。如果这样做你就不会使用字典或数据,你可以定义具有适当属性的实体。