gpt4 book ai didi

ios - NSFetchedResultsController 使用错误的更新类型进行更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:25 25 4
gpt4 key购买 nike

请在盲目地将此投票为重复之前查看评论。这不是一个重复的问题。

首先 - 我使用 MagicalRecord 来获取核心数据。其次 - 我的 UICollectionView 填充了一个 NSFetchedResultsController

NSFetchedResultsControllerNSPredicate 是 ...

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

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

当我使用 Magical Record 的 saveWithBlock 将新项目添加到 CoreData 时,collectionView 会正确更新并将更改动画化到 View 中。

问题是当我将 deleted 的值更改为 @YES...

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

然后 NSFetchedResultsController 委托(delegate)方法会触发,除了它会触发更改类型 NSFetchedResultsChangeUpdate。这不是它应该的样子。它应该是 NSFetchedResultsChangeDelete,因为更改 deleted 的值应该将其从获取请求中删除。

我不想只删除该对象,因为我需要使用已删除的 ID 更新服务器。

此外,如果我随后弹出 View 并将其再次推回,照片就会消失,所以我知道它正在正确更新它并且我知道它正在从获取请求中删除它。

有什么想法吗?

最佳答案

您不能将属性称为“已删除”,因为这与 NSManagedObjectisDeleted 方法冲突。

参见 Core Data NSPredicate "deleted == NO" does not work as expectedNSPredicate does not get executed on first launch对于不同的例子,如果一个属性被称为“删除”,就会发生“奇怪的事情”。

关于ios - NSFetchedResultsController 使用错误的更新类型进行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16283252/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com