NSDictionary

字典相当于Java中的Map, 有key和value

//
// main.m
// NSDictionary
//
// Created by rayln on 13-9-6.
// Copyright (c) 2013年 rayln. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{

@autoreleasepool {
NSDictionary *dic = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil] forKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil]];
NSDictionary *dic2 = [NSDictionary dictionaryWithObjects:[NSArray arrayWithObjects:@"a",@"b",@"c",@"d", nil] forKeys:[NSArray arrayWithObjects:@"k1",@"k2",@"k3",@"k4", nil]];
//包含的元素个数
[dic count]; //返回4
//比较2个字典是否相等
[dic isEqualToDictionary:dic2];
//根据key取出value
[dic objectForKey:@"k1"]; //输出a
//字典写入文件中
[dic writeToFile:@"/Users/rayln/Desktop/text.txt" atomically:YES];
//从字典读取数据
[NSDictionary dictionaryWithContentsOfFile:@"/Users/rayln/Desktop/text.txt"];
//返回所有的key
[dic allKeys];
//返回所有的value
[dic allValues];

#pragma mark - 用法
//另一种声称dictionary方法
NSDictionary *dic3 = [NSDictionary dictionaryWithObjectsAndKeys:
@"v6", @"k6",
@"v1", @"k1",
@"v1", @"k2",
@"v1", @"k3",
@"v4", @"k4", nil];
//返回包含value的所有key
[dic3 allKeysForObject:@"v1"]; //输出[k1, k2, k3]
//对应多个key找到多个value, notFoundMarker参数是表示如果找不到对应的key,则value值由notFoundMarker替代
[dic3 objectsForKeys:[NSArray arrayWithObjects:@"k1", @"k2", @"k5", nil] notFoundMarker:@"notfound"]; //输出[v1, v1, notfound]

#pragma mark - 字典遍历
//遍历所有key
for (id key in dic3) {
NSLog(@"%@", key);

}

//key的迭代器
NSEnumerator *enumKey = [dic3 keyEnumerator];
id key = nil;
while (key = [enumKey nextObject]) {
NSLog(@"key=%@", key);
}

//对象迭代器 不演示了!
[dic3 objectEnumerator];

//block遍历- stop表示是否停止循环 如果stop=YES, 则停止循环
[dic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
NSLog(@"block-%@=%@",key,obj);
}];

#pragma mark - 字典排序
//根据value进行排序,返回排好序的key的Array
NSArray *arr = [dic3 keysSortedByValueUsingSelector:@selector(compare:)]; //返回[k3, k2, k1, k4, k6]
//block排序,也是根据value进行排序,返回排好序的key的Array
arr = [dic3 keysSortedByValueUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
NSComparisonResult *result = [obj1 compare:obj2];
return result;
}];//返回[k3, k2, k1, k4, k6]

NSLog(@"%@", arr);

#pragma mark - 内存管理
//当字典有对象时,字典中每个对象都会做一次retain操作,当字典释放时就会做一次release操作

}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值