gpt4 book ai didi

ios - 使用NSFetchedResultsController来获取对象的属性

转载 作者:行者123 更新时间:2023-12-01 18:41:26 25 4
gpt4 key购买 nike

我需要发出一个CoreData提取请求,该请求将获取类型为“列表”的ManagedObject,其属性包括:name(String),hitCount(Int),lastUpdated(Date)和contents(OrderedSet)。现在,我需要在列表对象的contents属性内用“媒体” ManagedObjects填充TableView。当我已经有List实例的内容时,我想尝试一下...

let fetchRequest = NSFetchRequest<Media>(entityName: "Media")
fetchRequest.predicate = NSPredicate(format: "SELF in %@", list.contents)

...这为我提供了CoreData中已有的内容,但没有提供任何NSFetchedResultsControllerDelegate对通过网络调用获得的其他对象的更新,并在我最初抓取后添加到了数据库中。我也尝试过...
let fetchRequest = NSFetchRequest<Media>(entityName: "List")
fetchRequest.predicate = NSPredicate(format: "name == %@", list.name)

...这将返回List项,我将获得NSFetchedResultsControllerDelegate更新,但只会在List对象本身上移动类型-而不是在content属性更改时应用于TableView的实际更改(删除/插入等)。有没有办法实现我想要做的事情?任何帮助是极大的赞赏。

最佳答案

如果逆关系是一对一的,称为listRelationship,则可以使用:

let fetchRequest = NSFetchRequest<Media>(entityName: "Media")
fetchRequest.predicate = NSPredicate(format: "listRelationship == %@", list)

作为FetchedResultsController底层的访存。如果关系是一对多的,则将谓词更改为“ANY listRelationship ==%@”。无论哪种情况,都很难确保FRC使用的排序顺序与 List对象中的NSOrderedSet相匹配。

如果这对您很重要,则需要使用index属性显式建模排序顺序。如果关系是一对一的,则可以将 index属性添加到 Media实体,但是如果是一对多的,则生活会变得更加困难: Media对象可能是一个List中的第一项,但可能是另一个List中的最后一项。列表-索引与特定列表和特定媒体项相关。在这种情况下,添加另一个实体“ListEntry”,该实体具有 index属性和 ListMedia(一对多的倒数)的一对一关系。

关于ios - 使用NSFetchedResultsController来获取对象的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42428741/

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