我有一个带有下一个表的数据库:
Car
Sector
在Car
中,我有一对多关系,carHasSectors
,在Sector
中,我有sectorInCar
。
现在,我想编写一个谓词,它将在Sector
表中但通过Car
表进行搜索。为此,我这样做:
let p3 = NSPredicate(format: "SELF.carHasSectors.sectorName CONTAINS[c] %@ ", searchText)
其中SELF
是Car
,但找不到任何结果。
我做错了什么?我不能在核心数据中使用点符号转到Sector
吗?
答案 0 :(得分:0)
如果我理解正确,则需要具有特定名称的扇区的汽车。我认为您应该在NSPredicate(format: "sectorName CONTAINS[c] %@ ", searchText)
之类的Sector表上执行请求,然后将要进入的扇区列表映射到汽车列表中。
答案 1 :(得分:0)
两个选项:
获取对象而无需从关系中获取(car
是当前的Car
)
let result = (car.carHasSectors.allObjects as! [Sector])
.filter{$0.sectorName.range(of: searchText, options: .caseInsensitive) != nil}
使用谓词获取 Sector
NSPredicate(format: "sectorInCar.name == %@ AND sectorName CONTAINS[c] %@ ", carName, searchText)