3

請在查看之前將其作爲副本盲目投票。這不是一個重複的問題。NSFetchedResultsController更新錯誤更新類型

首先 - 我使用MagicalRecord作爲核心數據。 秒 - 我的UICollectionView填充了NSFetchedResultsController

NSPredicateNSFetchedResultsController是...

NSPredicate *eventPredicate = [NSPredicate predicateWithFormat:@"event = %@", self.event]; 
NSPredicate *deletedPredicate = [NSPredicate predicateWithFormat:@"deleted == NO"]; 

NSPredicate *compoundPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:@[eventPredicate, deletedPredicate]]; 

當我添加使用魔法記錄的saveWithBlockcollectionView更新正確的新項目CoreData和動畫將更改視圖。

的問題是,當我改變的刪除,以@YES值...

[MagicalRecord saveWithBlock:^(NSManagedObjectContext *localContext) { 
    Photo *photo = [[self photoAtIndexPath:[self.collectionView indexPathForCell:cell]] inContext:localContext]; 
    photo.deleted = @YES; 
}]; 

然後NSFetchedResultsController委託方法火,除了它與變型NSFetchedResultsChangeUpdate觸發。這不是它應該是。它應該是NSFetchedResultsChangeDelete,因爲更改已刪除的值應將其從提取請求中刪除。

我不想只刪除對象,因爲我需要使用刪除的ID更新服務器。

此外,如果我然後彈出視圖,並再次推回來,照片不見了,所以我知道它正在更新它,我知道它是從取回請求中刪除它。

任何想法?

+0

您不應該調用屬性「已刪除」:請參閱http://stackoverflow.com/questions/16000242/core-data-nspredicate-predicatewithblock-and-predicatewithformat-in-parent-child或http:// stackoverflow.com/questions/16178847/nspredicate-does-not-get-executed-on-first-launch。 – 2013-04-29 16:23:44

+0

非常感謝。這已修復它。但我不同意這個「類似的問題」。雖然它是相同的修復它是一個完全不同的「症狀」。我沒有辦法去尋找那個問題。 – Fogmeister 2013-04-29 16:30:25

+0

不客氣。 - 我給出了這些鏈接,因爲它們都表明如果您調用屬性「已刪除」會發生「奇怪的事情」。我不打算批評你的搜索工作! - 我不確定這是否是一個「重複問題」:這是一個不同的問題,但是同樣的根本問題,因此我投票結束重複。 – 2013-04-29 16:38:56

回答