S1U*_*S1U -1 indexing objective-c nsdictionary nsarray ios
像这样的数组:
Run Code Online (Sandbox Code Playgroud)<array> <dict> <key>Place</key> <string>A</string> <key>Name</key> <string>B</string> <key>Object</key> <string>C</string> </dict> <dict> <key>Place</key> <string>D</string> <key>Name</key> <string>E</string> <key>Object</key> <string>F</string> </dict> <dict> <key>Place</key> <string>X</string> <key>Name</key> <string>Y</string> <key>Object</key> <string>Z</string> </dict> <dict> <key>Place</key> <string>S</string> <key>Name</key> <string>T</string> <key>Object</key> <string>U</string> </dict> ... </array>
//由于某种原因,我通过删除原始顶级数组来简化此示例的级别.现在它们看起来像一个由一些词典组成的数组.
例如,[[objectArray objectAtIndex:i] valueForKey:@"Place"]
如果像X一样,可以获得任何值
然后,在另一个仍然相同的地方.m
,只需要利用X来反向获取X所在字典的索引.因为在这个地方,只能访问objectArray.
什么是正确的方法应该做什么?
再次使用KVC!
拥有阵列时有3行:D
NSArray *arrayWithDicts = @[d1,d2,d3,d4];//your array!
NSArray *arrayWithPlaces = [arrayWithDicts valueForKey:@"Place"];
NSUInteger index = [arrayWithPlaces indexOfObject:@"cologne"];
NSDictionary *dict = index != NSNotFound ? arrayWithDicts[index] : nil;
Run Code Online (Sandbox Code Playgroud)
#import <Foundation/Foundation.h>
int main(int argc, char *argv[]) {
@autoreleasepool {
//build demo array
NSDictionary *d1 = @{@"Place": @"clackson"};
NSDictionary *d2 = @{@"Place": @"berlin"};
NSDictionary *d3 = @{@"Place": @"cologne"};
NSDictionary *d4 = @{@"Place": @"mclean"};
NSArray *arrayWithDicts = @[d1,d2,d3,d4];
//get all places
NSArray *arrayWithPlaces = [arrayWithDicts valueForKey:@"Place"];
assert(arrayWithDicts.count == arrayWithPlaces.count);
//find place and get dict
NSUInteger index = [arrayWithPlaces indexOfObject:@"cologne"];
NSDictionary *dict = index != NSNotFound ? arrayWithDicts[index] : nil;
NSLog(@"%@", dict);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8074 次 |
最近记录: |