gpt4 book ai didi

iphone - NSFetchedResultsController 具有基于依赖属性的谓词

转载 作者:行者123 更新时间:2023-12-03 16:13:56 25 4
gpt4 key购买 nike

我有一个 Core Data iPhone 应用程序,它显示 订阅 实体,其中任何项目都无法读取。换句话说,我构建了一个这样的谓词:

[NSPredicate predicateWithFormat:@"ANY items.read == NO"]

虽然这适用于初始提取,但当我修改 Item 时,它不会影响 Subscription 实体,因此 NSFetchedResultsController 永远不会重新评估订阅 实体。有什么更好的方法来构建此结构,以便在设置项目的 read 属性时更新 Subscription 实体?

我确实尝试在 Subscription 上创建属性 unreadCount 并使用 keyPathsForValuesAffectingUnreadCount 返回包含 items.read 的集合>。我没想到这会起作用,而且没有。我从 _NSFaultingMutableSet 收到异常,告诉我不支持 read 键。

最佳答案

您遇到了 NSFetchedResultsController 的错误,其中未收到(或评估?)相关实体的属性更改的通知。

在这种情况下,itemsread 属性不会被“监视”更改。

您可以通过伪造关系中item的更改来解决问题,而不是重新构建。即当您更改 item.read 时,也假装更改 item

我的经验仅限于一对一的关系。我不清楚当您只更改多个 key 之一时,您将如何处理一对多关系。这可能有效:

thisItem.read = [NSNumber numberWithBool:NO];
[thisItem.subscription willChangeValueForKey:@"items"];
[thisItem.subscription didChangeValueForKey:@"items"];

这应该发送一个通知,表明 NSFetchedResultsController 正在监视的 subscriptions 对象上的关系 (subscription.items) 正在发生变化。

我可以提供一个完美运作的一对一关系案例的工作示例。

关于iphone - NSFetchedResultsController 具有基于依赖属性的谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2185679/

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