gpt4 book ai didi

ios - 使用 NSPredicate 过滤 NSNumber 的 NSArray 和 NSNumber 的 NSArray

转载 作者:行者123 更新时间:2023-11-29 03:41:13 29 4
gpt4 key购买 nike

我有这个自定义类:

@interface MyModel : NSObject

@property (nonatomic,strong) NSString *id_name;
@property (nonatomic,strong) NSArray *genres;

@end

流派数组是一个 NSNumber 数组。我用 MyModel 对象填充另一个数组,例如:

MyModel *m = [[MyModel alloc] init];
m.id_name = @"2345";
m.genres = [NSArray arrayWithObjects:[NSNumber numberWithInt:3],[NSNumber numberWithInt:5],nil];

MyModel *m2 = [[MyModel alloc] init];
m2.id_name = @"259";
m2.genres = [NSArray arrayWithObjects:[NSNumber numberWithInt:7],[NSNumber numberWithInt:10],nil];

MyModel *m3 = [[MyModel alloc] init];
m3.id_name = @"25932as";
m3.genres = [NSArray arrayWithObjects:[NSNumber numberWithInt:7],[NSNumber numberWithInt:10],[NSNumber numberWithInt:15],nil];

myArray = [NSArray arrayWithObjects:m,m2,m3,nil];

现在我想过滤 myArray 以使流派包含在该数组的元素中:

NSArray *a = [NSArray arrayWithObjects:[NSNumber numberWithInt:7],[NSNumber numberWithInt:10],nil];

因此,myArray 经过过滤后,应包含对象 m2m3。我可以使用 NSPredicate 来做到这一点吗?如果是这样,怎么办?或者还有其他办法吗?

最佳答案

Martin R 提供了一个优雅的答案,但如果我正确理解你的问题,你也可以使用更简单的谓词:

NSPredicate *allPred = [NSPredicate predicateWithFormat: @"ALL %@ IN genres", a];

NSArray *result = [myArray filteredArrayUsingPredicate: allPred];

此谓词将查找包含 a 数组中的所有流派的 MyModel。对于测试数据,这将是 ID 为 25925932as 的两个对象。

关于ios - 使用 NSPredicate 过滤 NSNumber 的 NSArray 和 NSNumber 的 NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18412522/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com