NSDictionary方法

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    @autoreleasepool {
//NSDictionary 不可变字典,使用键值对来存储数据,与NSArray不同,NSDictionary与NSset都是无序集合
//key 和 value 成对出现
        
        //@"" @1 @(1) @[] @{}
        //方法一:常用,键值对较清晰
        NSDictionary *dic1 = @{@"key1" : @"value1",
                               @"key2" : @"value2",
                               @"key3" : @"value3",
                               @"key4" : @"value4",
                               @"key5" : @"value5",
                               @"key6" : @"value6",
                               @"key7" : @"value7"};
        //方法二、三不清晰,不利于读代码
        NSDictionary *dic2 = [[NSDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", @"value2", @"key2", nil];
        NSDictionary *dic3 = [[NSDictionary alloc] initWithObjects:@[@"value1", @"value2"] forKeys:@[@"key1", @"key2"]];
#pragma mark - NSDictionary读取
        NSString *value1 = dic1[@"key1"];//取key1对应的value值
        NSString *value2 = [dic1 objectForKey:@"key9"];//字典取值找不到的时候输出 (null)
        //valueForKey是键值编码(KVC)的方法,不属于字典的方法,不要使用
        NSLog(@"%@", dic1);
        NSLog(@"%@ %@", value1, value2);
        
        NSArray *allKeys = [dic1 allKeys];
        NSArray *allValues = [dic1 allValues];
        
        //遍历整个字典(较少使用)
        for (NSUInteger i = 0; i < dic1.count; i++) {
            NSString *key = allKeys[i];
            NSLog(@"%@ : %@", key, dic1[key]);
        }
        //从头到尾遍历所有key值(forin)
        for (NSString *key in dic1) {
            NSLog(@"%@ : %@", key, dic1[key]);
            //break;//可用break;
        }
        
        //PS:NSArray遍历
        NSArray *array = @[@"1", @"4", @86];
        for (id value in array) {//遍历array中的所有类型值
            NSLog(@"%@", value);
        }
        
#pragma mark - NSMutableDictionary
        //初始化
        NSMutableDictionary *mutableDic1 = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"value1", @"key1", nil];
        NSMutableDictionary *mutableDic2 = [NSMutableDictionary dictionaryWithDictionary:mutableDic1];
        
        //新增
        [mutableDic1 setObject:@"value2" forKey:@"key2"];
        
        //删除
//        [mutableDic1 removeObjectForKey:@"key2"];
//        [mutableDic1 removeAllObjects];
        
        //修改
        [mutableDic1 setObject:@"333" forKey:@"key1"];//字典中的key值不能重复,所有333会覆盖key1,相当于修改
        
        //查找
        NSString *string = mutableDic1[@"key2"];//没有下标,只能通过key来操作
        
#pragma mark - NSSet
        //完全无序集合
        //初始化类似数组,分为可变和不可变,元素不能重复,常用来清除其他集合中的重复元素
        
    }
    return 0;
}

猜你喜欢

转载自yuandaimeng.iteye.com/blog/2200413