NSDictionary是不可变词典。
| 常用的NSDictionary方法 | |
| 方法 | 描述 |
| +(instancetype) dictionaryWithObjectsAndKeys: obj1,key1,obj2,key2,...,nil | 使用键-对象对{key1,obj1}、{key2,obj2}、...创建词典 |
| -(instancetype) initWithObjectsAndKeys: obj1,key1,obj2,key2,...,nil | 将新分配的词典初始化为键-对象对{key1,obj1}、{key2,obj2} |
| -(NSArray *) allKeys | 返回一个数组包含词典中所有的键 |
| -(NSUInteger) count | 返回词典中的记录数 |
| -(NSEnumerator *) keyEnumerator | 为词典中所有的键返回一个NSEnumerator对象 |
| -(NSArray *) keysSortedByValueUsingSelector: (SEL) selector | 返回词典中的键数组,它根据selector指定的比较方法进行排序 |
| -(NSEnumerator *) objectEnumerator | 为词典中的所有值返回一个Enumerator对象 |
| -(id) objectForKey: key | 返回指定的key对象 |
| -(void) enumerateKeysAndObjectsUsingBlock: (void(^)(id key, id obj, BOOL *stop)) block | 通过块获取词典中的每一个条目,条目包括键-对象对,只有当所有的元素都遍历完成或设置变量指针stop为YES才处理结束 |
示例
#import <Foundation/Foundation.h>
int main(int argc, const char * argv[]) {
@autoreleasepool {
/*
NSDictionary *glossary =
[NSDictionary dictionaryWithObjectsAndKeys:
@"A class defined so other classes can inherit from it",
@"abstract class",
@"To implement all the methods defined in a protocol",
@"adopt"
@"Storing an object for later use"
@"archiving",
nil]; //必须以nil结尾
*/
// 与上面的语法等价
NSDictionary *glossary = @{
@"abstract class": @"A class defined so other classes can inherit from it",
@"adopt": @"To implement all the methods defined in a protocol",
@"archiving": @"Storing an object for later use"
};
// 打印词典中所有的键-值对
for (NSString *key in glossary)
NSLog(@"%@: %@", key, [glossary objectForKey: key]);
NSLog(@"---------------------------------------------------");
// 对key按字母排序后再打印
NSArray *keys = [glossary allKeys];
keys = [keys sortedArrayUsingComparator: ^(id obj1, id obj2) {
return [obj1 compare: obj2];
}];
for (NSString *key in keys)
NSLog(@"%@: %@", key, [glossary objectForKey: key]);
}
return 0;
}