防止Cora数据插入

时间:2011-04-17 08:15:14

标签: iphone core-data nsmanagedobjectcontext

NSManagedObjectContext 即将插入对象时,是否有任何方式可以获得通知,然后阻止此操作?也许像-shouldInsertObject:之类的方法。

我正在创建我的应用程序的精简版本,并希望某个实体最多有三个对象。我不想在我创建该实体的新实例的任何地方查看我的代码并添加if,而是想在一个地方阻止它。

我查看了NSManagedObjectContextWillSaveNotificationNSManagedObjectContextObjectsDidChangeNotification通知,但它们都不合适。发布这些通知后,已添加对象。

1 个答案:

答案 0 :(得分:1)

也许您可以利用Core Data在插入时不会将实体存储到商店,这只有在您保存上下文时才会发生。因此,在保存上下文的方法中,您可以构建fetchRequest并获取商店中已有的实体数量:

- (NSUInteger)countForFetchRequest:(NSFetchRequest *)request error:(NSError **)error

如果这是三个或更多,只需使用以下方法获取尚未保存的对象:

- (NSSet *)insertedObjects

这是一个包含已插入但尚未保留到商店的对象的集合,并删除它们。 (警告用户,要求他们购买完整版等。)