我有一个包含几个NSArray
的NSDictionaries
。
我有一个包含ID字符串的NSString
。
我想要做的是迭代NSDictionaries
,直到找到与NSString
相匹配的对象。然后我想要返回整个NSDictionary
。
我对iPhone开发还不熟悉,所以我可能错过了一些明显的东西...提前谢谢。 :)
编辑,这是保存的.plist
文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
<dict>
<key>date</key>
<string>2011/05/20</string>
<key>id</key>
<string>1282007740</string>
<key>name</key>
<string>Test item name</string>
<key>niceDate</key>
<string>May 20, 2011</string>
</dict>
<dict>
<key>date</key>
<string>2010/08/15</string>
<key>id</key>
<string>1282075925</string>
<key>name</key>
<string>Test. Nothing to see here.</string>
<key>niceDate</key>
<string>Aug 15, 2010</string>
</dict>
</array>
</plist>
假设我的NSString是“1282075925”。我想获得匹配的id键的字典。
这段代码应该做你想要的 - 最后,dict
将指向你正在搜索的NSDictionary
,如果没有匹配的字典,它将是nil
。
// (These are assumed to exist)
NSArray *dictionaries;
NSString *idToFind;
NSDictionary *dict = nil;
for (NSDictionary *aDict in dictionaries) {
if ([[aDict objectForKey:@"id"] isEqualToString:idToFind]) {
dict = aDict;
break;
}
}
如果您正在搜索@“12345”,并使用@“id”键
for (NSDictionary* dictionary in array1) {
id value = [dictionary valueForKey:@"id"];
if ([value isKindOfClass:[NSString class]]) {
NSString* string = (NSString*) value;
if ([string isEqualToString:@"12345"]) {
return dictionary;
}
}
}
return nil;