我一直在考虑这个问题,并且在两周多的时间内寻找答案都无济于事。
我创建了一个表单,允许用户进行选择以构建一个简单的NSPredicate来过滤主要的实体列表。我希望用户能够查看他们创建的谓词,并且如果他们选择也能够删除它们。目前,该表单将允许我获得谓词的纯文本表示,例如,"我的狗是黑色"以及谓词字符串,例如"furColor == black"
。
我正在寻找一种方法来存储这些,以便我可以在NSFetchResultsController中快速使用它们作为主要实体,因此我也可以在它们自己的表视图中显示它们,以便它们可以在运行中被删除。有没有人知道这方面的好方法?
我一直在考虑将它们保存在实体表中(使用纯文本字符串和谓词作为字符串或作为NSPredicate的二进制数据)或NSUserDefaults中的NSDictionary。我不确定哪种性能更好,要么从默认值中获取NSDictionary,要么构造和初始化谓词,要么从数据库中获取它们然后获取主要实体。
我还犹豫使用NSDictionary路由,因为当用户查看他们已定义的谓词列表时,订单不会得到保证。
感谢任何帮助。谢谢!
答案 0 :(得分:0)
NSUserDefaults
选项似乎对我来说最实用。也许这个功能与你的实际数据模型没什么关系,所以混合两者似乎是错误的。在另一个应用程序中使用此方案应该非常容易。
至于排序,您只需添加一个可用于排序的creationDate键。或者您可以按任何其他键排序。
只要谓词列表不太长(几百个条目),就不会有性能差异。 NSUserDefaults
在后台使用SQLite持久性存储,可能与您用于Core Data的存储相同。
这句话不太清楚
我不确定哪种性能更好,要么从默认值中获取NSDictionary,要么构造和初始化谓词,要么从数据库中获取它们然后获取主要实体。
您可以根据用户默认值构建谓词,并从Core Data中获取。不要将Core Data实体存储在用户默认值中。