i have such model
class group: nsmanagedobject { @nsmanaged var id: int @nsmanaged var headitems: nsorderedset @nsmanaged var chestitems: nsorderedset } class item: nsmanagedobject { @nsmanaged var id: int @nsmanaged var datecreate: nsdate } how write predicate find groups containing in chestitems or headitems specified item?
this not working:
let fetchrequest = nsfetchrequest(entityname: "group") fetchrequest.predicate = nspredicate(format: "(any headitems == %@) or (any chestitems == %@)", item,item) let result = (self.moc.executefetchrequest(fetchrequest, error: nil) as? [group]) ?? [group]() update: problem updating references in relationship, code working
i believe need use subquery this, instead of any. try this:
nspredicate(format: "subquery(headitems, $headitem, $headitem.id == %@).@count > 0 or subquery(chestitems, $chestitem, $chestitem.id == %@).@count > 0", item.id, item.id ) you might refer this cheatsheet on nspredicates.
Comments
Post a Comment