objective-c - Objective C - 带有谓词的过滤器数组
问题描述
所以我有一个 NMMutableArray,我尝试使用 searchBar 进行过滤但没有成功,我没有发布所有代码,而是创建了一个项目,只是为了了解它是如何工作的,而我在网上找到的所有内容并没有帮助我完全理解这一点
这是我的代码:
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableArray<Model*>* firstArry = [[NSMutableArray alloc] init];
NSArray<Model*>* secondArry = [[NSMutableArray alloc] init];
Model* p1 = [[Model alloc] init];
p1.name = @"bob";
p1.lastName = @"bdas";
[firstArry addObject:p1];
Model* p2 = [[Model alloc] init];
p2.name = @"juny";
p2.lastName = @"his";
[firstArry addObject:p2];
Model* p3 = [[Model alloc] init];
p3.name = @"junay";
p3.lastName = @"firs";
[firstArry addObject:p3];
Model* p4 = [[Model alloc] init];
p4.name = @"bobov";
p4.lastName = @"daskal";
[firstArry addObject:p4];
Model* p5 = [[Model alloc] init];
p5.name = @"dima";
p5.lastName = @"bonder";
[firstArry addObject:p5];
for (Model* name in firstArry){
NSLog(@"%@",name.name);
}
NSString* filterWord = @"bo";
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"keywords.name CONTAINS[cd] %@",filterWord];
secondArry = [firstArry filteredArrayUsingPredicate:predicate];
if(secondArry.count > 0){
for (Model* name in firstArry){
NSLog(@"%@",name.name);
}
} else {
NSLog(@"second arry is empty");
}
}
我想用给定的 filterWord 过滤 firstArry 并获取一个新数组,其中包含他们命名的属性包含它的对象,如何做到这一点以及它是如何工作的?
解决方案
运算符的左侧CONTAINS[cd]
是将要应用谓词的对象,即firstArry
. 如果您想按name
key(path) 过滤,只需name
.
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"name CONTAINS[cd] %@",filterWord];
推荐阅读
- javascript - 为什么这个 aysnc 函数没有隐式返回一个承诺?
- amazon-s3 - Github Actions 中的构建过程已完成,退出代码为 2。 -- AWS S3 同步
- excel - Excel - 如何将 VALUETOTEXT() 结果转换回 DATETIME?
- blockchain - 分步教程 - 将 10,000 个独特图像的 ERC721 合约部署到 Opensea
- c++ - 此代码中的各种构造函数调用是什么?
- mysql - varbinary 和 uuid 上的 JDBI 选择
- robotframework - 如何在 Robot Framework 中更改 report.html?
- c++ - 无法在 Eclipse Windows 上编译和运行 MySQL 连接器 C++ 8.0 - 链接器 - MinGW
- android - Android Here Satellite 离线地图
- php - 需要一个项目列表,但输入“dict”PHP