gpt4 book ai didi

core-data - NSPredicate 导致更新编辑返回 NSFetchedResultsChangeDelete 而不是 NSFetchedResultsChangeUpdate

转载 作者:行者123 更新时间:2023-12-05 00:06:56 26 4
gpt4 key购买 nike

我在 - (NSFetchedResultsController *)fetchedResultsController 里面有谓词以标准方式从 CoreDataBook 示例开始。

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"state=%@ && date >= %@ && date < %@", @"1",fromDate,toDate];
[fetchRequest setPredicate:predicate];

这工作正常,但是在编辑项目时,它返回 NSFetchedResultsChangeDelete 而不是 Update。当主 View 返回时,它缺少该项目。如果我重新启动模拟器,则不会保存删除,并且会显示正确的编辑结果,谓词工作正常。
case NSFetchedResultsChangeDelete:
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;

我可以通过仅注释掉两个谓词行来确认行为,然后一切正常,因为它应该在编辑和调用 NSFetchedResultsChangeUpdate 而不是 NSFetchedResultsChangeDelete 后正确返回完整集。

我已阅读 http://matteocaldari.it/2009/11/multiple-contexts-controllers-delegates-and-coredata-bug
谁报告了类似的行为,但我还没有找到解决我的问题的方法。

最佳答案

我也遇到这个问题。根本原因是NSPredicate格式字符串中的属性值设置错误类型。

对于这个问题,可能是“state”的属性有一个Number类型,比如“Integer 32”。但是上面的代码向它传递了一个 NSString( @"1" ),只需将其更改为 NSNumber( @1 ),即可解决问题。

马修·魏斯 最终通过使用 fetch 请求模板解决了这个问题。我认为在没有类型问题的模板中检查了“state ”。并且只有 fromDate 和 toDate 由 subs 传递。

关于core-data - NSPredicate 导致更新编辑返回 NSFetchedResultsChangeDelete 而不是 NSFetchedResultsChangeUpdate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2646292/

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