iphone&;目标C-使用NSPredicate过滤阵列?
我有一个对象数组(用户) 每个用户都有一个名为“设备”的nsset 是否可以进行筛选,以便数组返回具有特定名称的设备的所有用户iphone&;目标C-使用NSPredicate过滤阵列?,iphone,objective-c,arrays,filtering,nspredicate,Iphone,Objective C,Arrays,Filtering,Nspredicate,我有一个对象数组(用户) 每个用户都有一个名为“设备”的nsset 是否可以进行筛选,以便数组返回具有特定名称的设备的所有用户 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"devices.category==%@", @"mobile"]; myArray = [allUsersArray filteredArrayUsingPredicate:predicate]; 你几乎成功了,只差一点点 每个用户都有一组设备。这
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"devices.category==%@", @"mobile"];
myArray = [allUsersArray filteredArrayUsingPredicate:predicate];
你几乎成功了,只差一点点 每个
用户
都有一组设备
。这意味着,当您调用[aUser valueForKeyPath:@“devices.category”]
时,它将为您提供设备类别的集合
换句话说,如果您的用户有两台设备,并且它们(分别)具有“移动”和“桌面”的类别,则“设备.类别”
将返回(移动,桌面)
。这是一个向量值。它包含多个元素
但是,您将其与标量值(单个元素)进行比较,@“mobile”
我认为你想要的是选择所有至少有一台设备属于“移动”类别的用户,对吗?如果是这种情况,那么您只需要使用ANY
关键字,并使谓词:
[NSPredicate predicateWithFormat:@"ANY devices.category = %@", @"mobile"]
有关这些聚合函数的更多信息,请查看。您几乎已经掌握了它,只差一点点
每个用户
都有一组设备
。这意味着,当您调用[aUser valueForKeyPath:@“devices.category”]
时,它将为您提供设备类别的集合
换句话说,如果您的用户有两台设备,并且它们(分别)具有“移动”和“桌面”的类别,则“设备.类别”
将返回(移动,桌面)
。这是一个向量值。它包含多个元素
但是,您将其与标量值(单个元素)进行比较,@“mobile”
我认为你想要的是选择所有至少有一台设备属于“移动”类别的用户,对吗?如果是这种情况,那么您只需要使用ANY
关键字,并使谓词:
[NSPredicate predicateWithFormat:@"ANY devices.category = %@", @"mobile"]
有关这些聚合函数的更多信息,请查看