1

我有一个应用程序,它使用 RestKit 和一个用于核心数据的 SQLite 存储与远程 API 对话。当我要添加服务器端搜索时,我不得不找到一种有效显示搜索结果的方法。为了实现这一点,我使用了一个 NSFetchedResultsController,它与另一个与 SQLite 存储具有相同模式的内存存储相关联,并且由 RestKit 提供支持。当 RestKit 搜索 API 的搜索端点时,它将响应映射回内存存储。

这对我的需要非常有效,但现在引起了另一个问题。当我从服务器取回这些“瞬态”对象并且用户选择了一个时,需要在该点将其复制到持久存储中(超出该点的各种交互将从服务器加载其他对象并尝试将它们绑定回来到原始对象-如果它们位于两个不同的对象上下文中,则会失败)。

tl;博士

有人对如何将整个对象(实体和关系)从一个核心数据存储复制到另一个有任何建议吗?或者,这甚至有必要吗?有没有更简单的方法来使用 RestKit 完成同样的任务?

通过更改搜索而不使用内存存储会更好地为我服务吗?如果是这样,我应该如何存储这些对象?

4

1 回答 1

2

我不会使用内存存储。我只是将搜索结果放入主商店并绕过复制问题。然后,我将进行一次清除以清除不再需要的旧搜索结果。您可能想要标记出于某种原因需要保留的搜索结果。并且您可以让 RestKit 在执行每个新搜索时自动执行清除(请参阅这些文档中的“获取请求块和删除孤立对象” )


对于您的另一个问题,关于标记。当您发出搜索请求时,搜索词在 URL 中。如果您使用RKObjectManager和路由,那么您可以访问提供给映射的元数据以获取搜索词并将其存储到返回的对象中。就像是:

@"@metadata.routing.parameters.searchTerm": @"searchTerm",

请参阅此处的元数据文档。

于 2013-06-20T14:42:36.193 回答