假设我有 2 个NSDictionaries
我事先不知道的,例如:
NSDictionary *dictA = @{ @"key1" : @1,
@"key2" : @2 };
NSDictionary *dictB = @{ @"key1" : @"a string" };
我想找到 的键dictB
和 的键或值之间的第一个匹配项dictA
。的每个键dictB
要么是一个 NSNumber 要么是一个字符串。如果是数字,请尝试从 的值中查找匹配项dictA
。如果是字符串,请尝试从dictA
.
使用 for 循环,它看起来像这样:
id match;
for (id key in dictA ) {
for (id _key in dictB {
if ( [_key is kindOfClass:NSNumber.class] && _key == dictA[key] ) {
match = _key
goto outer;
}
else if ( [_key is kindOfClass:NSString.class] && [_key isEqualToString:key] ) {
match = _key
goto outer;
}
}
};
outer:;
NSString *message = match ? @"A match was found" : @"No match was found";
NSLog(message);
我如何使用RACSequence
和RACStream
方法用 ReactiveCocoa 重写它,所以它看起来像:
// shortened pseudo code:
// id match = [dictA.rac_sequence compare with dictB.rac_sequence using block and return first match];