Iphone 防止Cora数据插入

Iphone 防止Cora数据插入,iphone,core-data,nsmanagedobjectcontext,Iphone,Core Data,Nsmanagedobjectcontext,当一个NSManagedObjectContext即将插入一个对象时,有没有办法得到通知,然后阻止它?可能是像-shouldinserobject:之类的方法 我正在创建我的应用程序的精简版本,并希望某个实体最多有三个对象。无论我在哪里创建该实体的新实例,我都不想检查我的代码并添加一个if,而是想在一个地方防止这种情况 我查看了NSManagedObjectContextWillSaveNotification和NSManagedObjectContextObjectsIDChangeNotif

当一个
NSManagedObjectContext
即将插入一个对象时,有没有办法得到通知,然后阻止它?可能是像
-shouldinserobject:
之类的方法

我正在创建我的应用程序的精简版本,并希望某个实体最多有三个对象。无论我在哪里创建该实体的新实例,我都不想检查我的代码并添加一个
if
,而是想在一个地方防止这种情况


我查看了
NSManagedObjectContextWillSaveNotification
NSManagedObjectContextObjectsIDChangeNotification
通知,但它们都不适用。发布这些通知时,对象已被添加。

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

- (NSUInteger)countForFetchRequest:(NSFetchRequest *)request error:(NSError **)error
如果是三个或更多,只需使用以下方法获取尚未保存的对象:

- (NSSet *)insertedObjects

这是一个包含已插入但尚未保留到存储的对象的集合,并删除这些对象。(警告用户,请他们购买完整版本等)

我想您需要自己监控何时调用insert,因为在调用insert之前,系统如何知道下一行将插入一些实体?@Ravin当调用
insert
时,您将如何监控?好主意,我现在要试试这个!酷:),我只是想添加一些东西。我认为从上下文中删除对象,然后记住在之后执行上下文保存(如果有三个以上的对象,则不只是中止保存),这一点很重要。如果三个有效对象中的某些对象已被更改,则应将其持久化,这在删除insertedObjects后可以执行。