3

我正在尝试使用两个标志将 iphone 应用程序与 Web 服务器同步-已同步和 is_deleted,如此处所述https://stackoverflow.com/a/5052208

当用户删除应用程序中的项目时,我将 is_deleted 标志设置为 true。现在我想确保该对象不再出现在我的应用程序中,因为它已被删除(例如在表格视图中),但我需要保留该对象以执行同步。所以这是一个问题:

默认情况下,将所有带有 is_deleted 标志的对象排除在应用程序中的最佳方法是什么?

我现在可以想到两个选择:

  1. 让应用程序中的几乎每个查询都检查项目是否已删除 - 似乎根本不是很有效

  2. 找到一种更通用的方法来自动从应用程序中排除所有 is_deleted=YES 对象,例如通过覆盖 awakeFromFetch 或其他方法。但我不确定如何从上下文中排除对象,而是将它们保存在数据库中以进行同步。

做这个的最好方式是什么?#2甚至可能吗?

4

2 回答 2

2

您正在使用 NSPredicate 进行搜索,对吗?只需让每个可同步类实现一个默认谓词来检查您的 is_deleted 状态,并附加到谓词上以专门用于进一步的查询。

另外:不要命名is_deleted。考虑一下is_safe_deleted或者safely_removed_and_not_called_is_deleted——因为你第一次写的[mo isDeleted]时候你真的是认真[mo is_deleted]的,你会过得很糟糕。

于 2014-03-06T19:07:24.943 回答
1

我猜你正在考虑当用户想要删除一些对象但没有互联网连接的情况下,对吧?在这种情况下,我建议实际上从数据库中删除这些对象,并以不同的形式存储有关这些已删除对象的信息。例如,您可以有一个名为“XXDelayedOperation”的单独实体,其中包含创建NSURLRequest. 这看起来是一种更有效的处理方式。

于 2014-03-06T19:13:35.253 回答