Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iphone&;目标C-使用NSPredicate过滤阵列?_Iphone_Objective C_Arrays_Filtering_Nspredicate - Fatal编程技术网

iphone&;目标C-使用NSPredicate过滤阵列?

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]; 你几乎成功了,只差一点点 每个用户都有一组设备。这

我有一个对象数组(用户) 每个用户都有一个名为“设备”的nsset 是否可以进行筛选,以便数组返回具有特定名称的设备的所有用户

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"]
有关这些聚合函数的更多信息,请查看