您的位置:首页 > 其它

oc 字典集合简单使用

2015-10-06 17:50 363 查看
//    字典类用于存放具有映射关系的数据
//    kay是唯一的⚠️ value是对象 无序存放
//    NSDictionary❤️
//    1 、以键值对的形式进行存储 即 kay-value
//    2 、字典靠key找到相应的value对象 key不能重复 但是value可以重复
//    3 、字典无序存放⚠️

//    ->->->->->->->->->->->->->->->->实例化不可变的字典对象
/*

NSDictionary *d1 = @{@"k1": @"value1",@"k2":@"value2"};
//    NSLog(@"%@",d1);

//    initWithObjectsAndKeys 一个value 一个key ⚠️
NSDictionary *d2 = [[NSDictionary alloc]initWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2", nil];
//    NSLog(@"%@",d2);
//    用一个字典给另一个字典初始化
NSDictionary *d3 = [[NSDictionary alloc]initWithDictionary:d2];
//    NSLog(@"%@",d3);

NSDictionary *d4 = [NSDictionary dictionaryWithDictionary:d3];
NSLog(@"%@",d4);

NSDictionary *d5 = [NSDictionary dictionaryWithObject:@"da" forKey:@"key"];//key遵循nscopying协议的对象
NSLog(@"%@",d5);

NSDictionary *d6 = [NSDictionary dictionaryWithObjectsAndKeys:@"obj1",@"key1",@"obj2",@"key2", nil];
NSLog(@"%@",d6);

NSDictionary *d7 = [NSDictionary dictionaryWithObjects:@[@"v1",@"v2"] forKeys:@[@"k1",@"k2"]];
NSLog(@"%@",d7);

//->->->->->->->->->->->->->->-> 获取字典对象个数
NSLog(@"%lu", [d1 count]);
//->->->->->->->->->->->->->->-> 获取所有的key 和 value
NSArray *a = [d1 allKeys];
NSLog(@"%@",a);
NSArray *b = [d1 allValues];
NSLog(@"%@", b);

//->->->->->->->->->->->->->->-> 通过key 获取 value
//    valueForKey 不安全 key里不能有@ 否则会崩     objectForKey 不会崩 返回null
NSLog(@"%@", [d1 valueForKey:@"k1"]); //kvc
NSLog(@"%@", [d1 objectForKey:@"k2"]);
*/

/*

//->->->->->->->->->->->->->->->NSMutableDictionary

//->->->->->->->->->->->->->-> 创建可变字典对象
//    空的   使用之前必须进行初始化 、、、、、、、、、、、、、、、、、、
NSMutableDictionary *md1 = [[NSMutableDictionary alloc]init];
NSMutableDictionary *md2 = [NSMutableDictionary dictionary];
//->->->->->->->->->->->->->-> 添加键值对
[md1 setValue:@"v1" forKey:@"k1"];// value 可以为空 但不会添加到字典中
[md1 setObject:@"v2" forKey:@"k2"];
[md1 setObject:@"v3" forKey:@"k3"];//value 不能为空 否则会崩
NSLog(@"%@",md1);
//->->->->->->->->->->->->->-> 修改key对应的value
[md1 setValue:@"v2" forKey:@"k1"];
NSLog(@"%@",md1);
//->->->->->->->->->->->->->-> 删除键值对
//    [md1 removeObjectForKey:@"k1"];
//    [md1 removeObjectsForKeys:@[@"k1",@"k2"]];
//    [md1 removeAllObjects];
//    NSLog(@"%@",md1);
//->->->->->->->->->->->->->-> 循环遍历字典
//    NSArray *arr = [md1 allKeys];
//    for (int i = 0 ; i < [md1 count]; i++) {
//        NSLog(@"%@",[arr objectAtIndex:i]);//所有key
//        NSLog(@"%@",arr[i]);
//        NSLog(@"%@", md1[arr[i]]);//字典对象名[key]
//        NSLog(@"%@",[md1 objectForKey:arr[i]]);
//    }
//得到的是所有的   key  ⚠️
for (id ob in md1) {
NSLog(@"%@",ob);
//        NSLog(@"%@",[md1 valueForKey:ob]);
NSLog(@"%@", md1[ob]);//通过key得到value
}
*/

/*  字面量
基本的数值类型的字面量:
@数值  NSLog(@"%@",@32);
@(数值)
BOOL a = YES;
NSLog(@"%@",@(a));//可以把一个数值类型的变量转化为对象类型 需要加();

字符串 @""
数组 @[obj,...]
字典@{key:value,...}
*/

/*

//  ->->->->->->->-> 集合: 唯一性 无序性 都是对象类型

//    ->->->->->->->-> 创建集合对象

NSSet *s1 = [[NSSet alloc]initWithObjects:@"s1",@"s2",@"s2",@(23),@(1), nil];
NSLog(@"%@",s1);
NSSet *s2 = [[NSSet alloc] initWithArray:@[@"ss",@"ss",@"s"]];//数组转换为集合 集合特性 :去除重复
NSLog(@"%@",s2);
NSSet *s3 = [[NSSet alloc] initWithSet:s1];
NSLog(@"%@",s3);
NSSet *s4 = [NSSet setWithObject:@"dgygi"];
NSLog(@"%@",s4);
//->->->->->->->->获取集合的个数
NSLog(@"%lu",[s1 count]);
//->->->->->->->-> 获取集合中的某个元素
NSLog(@"%@",[s1 anyObject]);//随机某个
//->->->->->->->-> 是否包含某个元素
NSLog(@"%d",[s1 containsObject:@"s1"]);
//->->->->->->->-> 取出集合中的所有元素
NSArray *a = [s1 allObjects];//转换为数组
NSLog(@"%@",a);

//->->->->->->->->NSMutableSet 可变的   创建可变集合对象

NSMutableSet *s5 = [NSMutableSet setWithSet:s1];

//->->->->->->->->添加元素
[s5 addObjectsFromArray:@[@"ss",@"ds"]];
[s5 addObject:@(32)];
NSLog(@"%@",s5);
//->->->->->->->->设置元素 (重置)
//    [s5 setSet:s4];//相当于重置内容为 s4 中的值
//    NSLog(@"%@",s5);
//->->->->->->->->删除元素
[s5 removeObject:@"ss"];
NSLog(@"%@",s5);
[s5 removeAllObjects];
NSLog(@"%@",s5);

//->->->->->->->->NSCountedSet
NSCountedSet *cs1 = [NSCountedSet setWithObjects:@"as",@2,@3,@"2",@"3",@"as",@"ad",@"ad",@"ad", nil];
NSLog(@"%@",cs1);
NSLog(@"%lu",[cs1 countForObject:@"as"]);//获取某个字符出现的次数
[cs1 removeObject:@"ad"]; //移除 每次只能去掉一个
NSLog(@"%@",cs1);

for (id obj in cs1) {
NSLog(@"%@",obj);
}
*/

/*
SEL 类成员方法的指针
可以理解@selector()就是取类方法的编号,他的行为基本可以等同C语言中函数指针,只不过C语言中,可以把函数名直接赋给一个函数指针,而oc的类不能直接应用函数指针,这样只能做一个@selector语法来取
他的结果是一个SEL类型。这个类型本质是类方法的编号(函数地址)
注意:1@selector是查找当前类(含子类)的方法;
*/
SEL简介
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: