2011-04-17 81 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