2011-04-17 96 views
0

有没有什么办法得到通知时NSManagedObjectContext约到插入一个对象,然后防止这个?也许像-shouldInsertObject:之类的方法。防止Cora数据插入

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

我看着NSManagedObjectContextWillSaveNotificationNSManagedObjectContextObjectsDidChangeNotification通知,但它们都不合适。当这些通知发布时,对象已经被添加。

+0

我认为你需要自己监视插入被调用的时间,因为直到插入被调用,系统将如何知道它将在下一行有一些插入的实体? – Ravin 2011-04-17 10:27:41

+0

@Ravin如何调用insert函数? – fabian789 2011-04-17 15:09:20

回答

1

也许你可以利用Core Data在插入时不存储Entity到Store中,这只发生在你保存上下文时。所以,在你保存上下文的方法,你可以建立一个fetchRequest并得到实体的数量已经在卖场:

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

如果这是三个或更多,只要拿到对象尚未使用,保存:

- (NSSet *)insertedObjects 

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

+0

好主意,我现在就试试看! – fabian789 2011-04-17 15:07:52

+0

好吧,不得不改变一些其他的东西,但现在它的作品。 – fabian789 2011-04-17 15:38:02

+1

酷:),我只是想添加一些东西。我认为从上下文中删除对象并记得在事后保存上下文很重要(如果超过三个,不要中止保存)。如果您的三个有效对象中的一些已被更改,则应该保留它们,在删除insertedObjects后可以执行此操作。 – RickiG 2011-04-17 20:12:17