Quickblox 自定义对象数组的 NSPredicate
NSPredicate for Array of Quickblox Custom Objects
我有一个 NSMutableArray
,其中包含大量 QuickBlox 自定义对象 (QBCOCustomObject
class)。
当我的用户在文本字段中输入姓名信息时,我想过滤我的表格视图以根据他们的搜索显示结果。
这是我从自定义 class...
中获取用户全名的方法
for (QBCOCustomObject *object in self.userArray) {
NSString *c = [object.fields[@"fullName"];
NSLog (@"%@", c);
}
在下面的方法中,我试图设置谓词,但我很难找到谓词的正确格式。有人可以帮忙吗?
- (void)textFieldDidChange :(UITextField *)theTextField {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(fullName CONTAINS[cd] %@)", self.searchBar.text];
self.userArray = [[self.userArray filteredArrayUsingPredicate:predicate] mutableCopy];
[self.tableView reloadData];
}
这是工作示例:
NSMutableArray *initialArray = [NSMutableArray array];
QBCOCustomObject *object1 = [QBCOCustomObject customObject];
object1.fields = [@{
@"fullName": @"Igor",
@"age": @(27)
} mutableCopy];
[initialArray addObject:object1];
//
QBCOCustomObject *object2 = [QBCOCustomObject customObject];
object2.fields = [@{
@"fullName": @"Bob",
@"age": @(27)
} mutableCopy];
[initialArray addObject:object2];
//
QBCOCustomObject *object3 = [QBCOCustomObject customObject];
object3.fields = [@{
@"fullName": @"Igorio",
@"age": @(27)
} mutableCopy];
[initialArray addObject:object3];
NSLog(@"initialArray: %@", initialArray);
NSPredicate *bPredicate = [NSPredicate predicateWithFormat:@"fields.fullName CONTAINS 'Igor'"];
NSArray *filteredArray = [initialArray filteredArrayUsingPredicate:bPredicate];
NSLog(@"filteredArray: %@", filteredArray);
它 returns 'Igor' 和 'Igorio' 对象并跳过 'Bob'
这里有一个关于 NSPredicate 的很好的教程,里面有很好的例子:
我有一个 NSMutableArray
,其中包含大量 QuickBlox 自定义对象 (QBCOCustomObject
class)。
当我的用户在文本字段中输入姓名信息时,我想过滤我的表格视图以根据他们的搜索显示结果。
这是我从自定义 class...
中获取用户全名的方法for (QBCOCustomObject *object in self.userArray) {
NSString *c = [object.fields[@"fullName"];
NSLog (@"%@", c);
}
在下面的方法中,我试图设置谓词,但我很难找到谓词的正确格式。有人可以帮忙吗?
- (void)textFieldDidChange :(UITextField *)theTextField {
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(fullName CONTAINS[cd] %@)", self.searchBar.text];
self.userArray = [[self.userArray filteredArrayUsingPredicate:predicate] mutableCopy];
[self.tableView reloadData];
}
这是工作示例:
NSMutableArray *initialArray = [NSMutableArray array];
QBCOCustomObject *object1 = [QBCOCustomObject customObject];
object1.fields = [@{
@"fullName": @"Igor",
@"age": @(27)
} mutableCopy];
[initialArray addObject:object1];
//
QBCOCustomObject *object2 = [QBCOCustomObject customObject];
object2.fields = [@{
@"fullName": @"Bob",
@"age": @(27)
} mutableCopy];
[initialArray addObject:object2];
//
QBCOCustomObject *object3 = [QBCOCustomObject customObject];
object3.fields = [@{
@"fullName": @"Igorio",
@"age": @(27)
} mutableCopy];
[initialArray addObject:object3];
NSLog(@"initialArray: %@", initialArray);
NSPredicate *bPredicate = [NSPredicate predicateWithFormat:@"fields.fullName CONTAINS 'Igor'"];
NSArray *filteredArray = [initialArray filteredArrayUsingPredicate:bPredicate];
NSLog(@"filteredArray: %@", filteredArray);
它 returns 'Igor' 和 'Igorio' 对象并跳过 'Bob'
这里有一个关于 NSPredicate 的很好的教程,里面有很好的例子: