【发布时间】:2020-01-03 21:34:20
【问题描述】:
鉴于 Dogs 和 Owners 之间是一对多的关系,即
(Owner)
@NSManaged public var dogs: NSSet?
(Dog)
@NSManaged public var owners: NSSet?
我有一个返回 Dogs 的 DogProvider 类。它默认返回所有 Dogs。但是在我给 DogProvider 一个所有者的情况下,我如何在 NSFetchedResultsController 中只返回该所有者的狗?我知道以下方法不起作用 (Cannot convert value of type 'Owner?' to expected argument type '[Any]?') 但这是我的最新尝试。
let fetchRequest: NSFetchRequest<Dog> = Dog.fetchRequest() //return all dogs by default
if let owner = self.owner {
fetchRequest.predicate = NSPredicate(format: "owner = %@", argumentArray: self.owner)
}
【问题讨论】:
-
您可以像访问任何其他属性一样访问关系,例如
owner.dogs或dog.owner -
我明白,但视图控制器期待
dogProvider.fetchedResultsController.fetchedObjects -
如果你有一个 Owner 对象,那么你不需要执行获取,如果你有一个 owner 对象,则返回 owner.dogs。
dogs是一个 Set 所以你可能需要做Array(owner.dogs)如果你需要返回一个像fetchedObjects这样的数组 -
argumentArray是一个数组。试试argumentArray: [owner]。
标签: swift core-data nspredicate nsfetchedresultscontroller nsfetchrequest