Mic*_*ael 6 iphone xcode objective-c ios
现在我正在尝试以下它,它的工作原理.
- (void)findDictionaryWithValueForKey:(NSString *)name {
for (NSDictionary * set in myArray) {
if ([[set objectForKey:@"title"] isEqualToString:name])
\\do something
}
}
Run Code Online (Sandbox Code Playgroud)
编辑: 我在bshirley的帖子中添加了一个额外的参数.现在它看起来更灵活.
- (NSDictionary *)findDictionaryWithValue:(NSString*)name forKey:(NSString *)key {
__block BOOL found = NO;
__block NSDictionary *dict = nil;
[self.cardSetsArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
dict = (NSDictionary *)obj;
NSString *title = [dict valueForKey:key];
if ([title isEqualToString:name]) {
found = YES;
*stop = YES;
}
}];
if (found) {
return dict;
} else {
return nil;
}
}
Run Code Online (Sandbox Code Playgroud)
使用filteredArrayUsingPredicate:数组的方法来获取满足您要求的所有字典.
NSPredicate * predicate = [NSPredicate predicateWithFormat:@" title MATCHES[cd] %@", name];
NSArray * matches = [myArray filteredArrayUsingPredicate:predicate];
Run Code Online (Sandbox Code Playgroud)
现在matches是具有title等于键的字典数组name.
这是使用较新API的一种可能实现.(我还修改了实际返回值的方法).主要提供用于演示API.假设标题对于数组中的一个字典是唯一的.
- (NSDictionary *)findDictionaryWithValueForKey:(NSString *)name {
// ivar: NSArray *myArray;
__block BOOL found = NO;
__block NSDictionary *dict = nil;
[myArray enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
dict = (NSDictionary *)obj;
NSString *title = [dict valueForKey:@"title"];
if ([title isEqualToString:name]) {
found = YES;
*stop = YES;
}
}];
if (found) {
return dict;
} else {
return nil;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4849 次 |
| 最近记录: |