gpt4 book ai didi

ios - NSFetchedResultsController 的复杂获取请求

转载 作者:行者123 更新时间:2023-11-29 12:19:13 25 4
gpt4 key购买 nike

这是我的模型的简化外观:

  • 媒体具有属性“状态”,可以是“正在上传”或“已上传”。
  • 用户的属性“syncStatus”为“NotSynced”或“Synced”。
  • ObjectX 是用户和媒体之间的“链接”对象
  • 用户与 ObjectX 有一对多的关系
  • ObjectX 与 Media 具有一对一的关系

有没有什么方法可以使用 NSFetchedResultsController 来获取所有“已同步”且所有媒体都已“上传”的用户?当“媒体”状态更改时,它也必须更新其内容,以便获取新用户。我听说 NSFetchedResultsController 不能很好地处理如此复杂的获取请求。

Model Graph

最佳答案

我同意用户应该有另一个状态标志(或使用同步状态标志)。您可以通过覆盖媒体对象中的 setter 来在中心点更新它。

-(void)setStatus:(MediaStatus)value {
[self willChangeValueForKey:@"status"];
[self setPrimitiveStatus:value];
[self didChangeValueForKey:@"status"];

// get status of other media objects
NSSet *objects = self.objectx.user.objects;
NSSet *updatingObjects =
[objects filteredSetUsingPredicate:
[NSPredicate predicatesWithFormat:@"media.status = %@", kUpdatingStatus]];
self.objectx.user.updating =
updatingObjects.count ? kUpdatingStatus : kUpdatedStatus;
}

不过,适当的 FRC 谓词也应该起作用。例如,只显示更新的用户,类似于

[NSPredicate predicateWithFormat:@"any objectx.media.status = $@", kUpdatedStatus]

关于ios - NSFetchedResultsController 的复杂获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31124514/

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