我有一个对象数组(用户) 每个用户都有一个名为“devices”的nsset 是否可以进行过滤,以便数组返回具有特定名称的设备的所有用户。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"devices.category==%@", @"mobile"];
myArray = [allUsersArray filteredArrayUsingPredicate:predicate];
答案 0 :(得分:5)
你几乎得到它,只是一点点。
每个User
都有一组Devices
。这意味着当您调用[aUser valueForKeyPath:@"devices.category"]
时,它将为您提供设备类别聚合的集合。
换句话说,如果您的用户有2台设备,并且他们(分别)拥有category
“移动”和“桌面”,那么"devices.category"
将返回(mobile, desktop)
。这是一个矢量值。它包含多个元素。
但是,您将此与标量值(单个元素)@"mobile"
进行比较。
我认为你想要的是想要选择至少拥有一个属于“移动”类别的设备的所有用户,对吗?如果是这种情况,那么您只需使用ANY
关键字,就这样制作谓词:
[NSPredicate predicateWithFormat:@"ANY devices.category = %@", @"mobile"]
有关这些聚合函数的更多信息,请查看Predicate Programming Guide。
答案 1 :(得分:0)