我想使用他们的iOS SDK从Evernote服务中下载并缓存笔记,笔记本和标签。他们的SDK带有一个Store
,它返回一个模型对象数组,匹配我设置的过滤条件。
我想采用这些模型并将它们用作核心数据中的实体。我明白我不能,因为他们从NSObject继承。所以我向大家提出的问题是,当我基于Evernote模型对象对我的实体进行建模时,我可以采用哪些最佳实践?这真是一种痛苦,因为每次他们改变某些东西时,我都必须在我的实体中反映出相同的变化。有没有工作,或者我被困在建桥梁(可以这么说)?。
谢谢, 乔纳森
答案 0 :(得分:2)
关注我的评论
我在这里不明白你的问题。刚开始数据导入 每次从Evernote返回模型。每个模型都应该是 通过核心数据实体设计。
你回复了。
抱歉,我不确定您的导入是什么意思。放下物品 从Evernote然后手动将其对象属性分配给我的 实体?这将是一个痛苦,但是一个选择。如果有很多话 要复制的属性。
使用导入我的意思是你应该为从Evernote收到的结果中返回的每个模型插入一个托管对象。
这意味着如果Evernote返回包含三个属性的模型,那么你应该创建一个看起来相同的Entity
(或类似的,因为它严格依赖于你的UI)。
这里我假设您的Core Data存储是一个缓存。所以你应该应用同步的东西。应根据用户插入,更新或删除项目。同步并不容易实现,但我可以为您推荐以下教程。
在这种情况下,您也可以利用RestKit,因为它提供了与Core Data的集成。特别是,它允许以简单的方式将NSObject
s(例如从JSON调用返回)映射到Core Data实体。可以在NSScrencast GitHub Repository找到一个示例。请注意,我不知道Evernote SDK是如何工作的。所以,这种方法没有用处。
但是如果你是RestKit和Core Data的新手,我真的建议坚持使用普通的核心数据。它已经很难了。
如果您需要别的东西,请告诉我。
更新1
我肯定会做同步,所以我想我有 使用托管对象完全映射Evernote对象。自从 Evernote对象可以包含代表视频,图片的数据blob, 文件等,我将需要看看如何将这些数据存储在Core Data中 同样。
在核心数据中,您需要(这不是必须,但我非常好的建议)将文件(例如图像)存储在文件系统中。在实体中,您应该仅维护图像的元信息(即路径),并通过它稍后检索图像。这对于小数据来说不是必需的,但我认为你的二进制文件会很大。
从iOS 5开始,有一个名为外部存储的新标志,可以根据启发式算法为您执行此操作。
如果指定托管对象属性的值可能是 作为外部记录存储,Core Data启发式决定a 每个值的基础是否应该直接保存数据 数据库或将URI存储到它为您管理的单独文件中。
关于搜索二进制文件我真的建议使用一个名为tag
的属性。这将允许您搜索图像,视频等。显然,当您保存时,您需要将该标记与指定的二进制数据相关联。这只是一个想法。
P.S。如果您需要进一步的支持我真的建议在SO上打开一个新问题。这有一个独立的问题。
答案 1 :(得分:-1)
您可能希望将对象保存为NSData
。由于我不知道你想要使用什么对象,我无法确定它是否适合这个。要查看是否存在,您必须检查该类是否采用NSCoding
协议。
有关归档的更多信息可以在Apple的文档中找到:
https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Archiving/Archiving.html