Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/102.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用NSFetchedResultsController获取对象';s属性_Ios_Core Data_Nsfetchedresultscontroller_Nsfetchrequest - Fatal编程技术网

Ios 使用NSFetchedResultsController获取对象';s属性

Ios 使用NSFetchedResultsController获取对象';s属性,ios,core-data,nsfetchedresultscontroller,nsfetchrequest,Ios,Core Data,Nsfetchedresultscontroller,Nsfetchrequest,我需要发出一个coredatafetch请求,获取类型为“List”的ManagedObject,其属性包括:name(String)、hitCount(Int)、lastUpdated(Date)和contents(OrderedSet)。现在,我需要在列表对象的contents属性中使用“Media”ManagedObjects填充TableView。当我已经有了一个列表的实例谁的内容我想要我已经尝试 let fetchRequest = NSFetchRequest<Media>

我需要发出一个coredatafetch请求,获取类型为“List”的ManagedObject,其属性包括:name(String)、hitCount(Int)、lastUpdated(Date)和contents(OrderedSet)。现在,我需要在列表对象的contents属性中使用“Media”ManagedObjects填充TableView。当我已经有了一个列表的实例谁的内容我想要我已经尝试

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

let fetchRequest = NSFetchRequest<Media>(entityName: "List")
fetchRequest.predicate = NSPredicate(format: "name == %@", list.name)
let fetchRequest=NSFetchRequest(entityName:“列表”)
fetchRequest.predicate=NSPredicate(格式:“name==%@”,list.name)

…返回列表项,我将获得NSFetchedResultsControllerDelegate更新,但仅列表对象本身的类型为move,而不是在其内容属性更改时应用于TableView(删除/插入等)所需的实际更改。有没有办法实现我的目标?非常感谢您的帮助。

如果反向关系为一,称为
列表关系
,则您可以使用:

let fetchRequest = NSFetchRequest<Media>(entityName: "Media")
fetchRequest.predicate = NSPredicate(format: "listRelationship == %@", list)
let fetchRequest=NSFetchRequest(entityName:“媒体”)
fetchRequest.predicate=NSPredicate(格式:“listRelationship==%@”,列表)
作为FetchedResultsController的底层获取。如果关系为多,请将谓词更改为“ANY listRelationship==%@”。在这两种情况下,都很难确保FRC使用的排序顺序与
列表
对象中的SensorDeredSet匹配


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

媒体与列表之间是否存在反向关系?如果是,它是一个还是多个:一个媒体对象可以与多个列表相关吗?(您需要的谓词在每种情况下都不同)。是的,存在相反的关系。列表对象映射到媒体对象的内容属性是对多类型。到目前为止,从媒体对象到列表对象的反向关系是一对一的类型,但现在想想看,媒体对象可以存在于多个列表中,因此可能双方都应该是一对多的类型。