我设置了以下字典(对象,键)
0, "10;0.75,0.75"
1, "0;2.25,2.25"
3, "1;3.5,2.0"
4, "1;4.5,3.0"
5, "2;6.0,5,0"
我要过滤的内容将基于对象和键。该对象是一个 NSNumber。关键是一个字符串,但我真的不想要整个字符串。我想拆分由分号分隔的字符串并获取拆分的第一个索引,这将根据我要查找的对象生成字符串 10、0、1、1 或 2。
作为一个具体的例子:
是否有任何键等于@“1”且对象大于3。
在这种情况下,我应该期望返回 YES,因为对象 4 在我进行拆分后有一个等于 @"1"的键。
我想我正在寻找一种聪明的方法来定义 NSPredicate 以对由分号分隔的键进行拆分,然后基于它进行过滤(比较等)。如果您有任何问题或需要其他信息,请告诉我。
最佳答案
我能想到的一个非常幼稚的实现
- (BOOL)hasKey:(NSString *)key withValueGreaterThan:(id)object{
NSDictionary *dictionary = @{@"10;0.75,0.75": @0,
@"0;2.25,2.25" : @1,
@"1;3.5,2.0" : @3,
@"1;4.5,3.0" : @4,
@"2;6.0,5,0" : @5};
NSPredicate *keyPredicate = [NSPredicate predicateWithFormat:@"SELF BEGINSWITH %@",key];
NSArray *filteredKeys = [[dictionary allKeys]filteredArrayUsingPredicate:keyPredicate];
for (NSString *k in filteredKeys) {
NSNumber *value = dictionary[k];
if (value>object) {
return YES;
}
}
return NO;
}
使用
BOOL hasValue = [self hasKey:@"1;" withValueGreaterThan:@3];
关于ios - 使用 NSPredicate 过滤对象和键(需要拆分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17102298/