• oc基础类型之NSDictionary


    #import <Foundation/Foundation.h>
    #import "Person.h"
    int main(int argc, const char * argv[]) {
        @autoreleasepool {
            //字典用大括号赋值
            //字典是无序的 系统会自动对其key排序
            //字典的创建
            NSDictionary *dic3 =@ {
                @"key1":@"value1",
                @"key2":@"value2",
                @"key3":@"value3"
            };
            NSLog(@"%@",dic3);
            
         //   NSDictionary *dics = [NSDictionary new];
          //  NSDictionary *dics = [[NSDictionary alloc] init];
          //  NSDictionary *dics = [NSDictionary dictionary];
            
            //字典的初始化:- (instancetype)initWithObjectsAndKeys:(id)firstObject, ...
            NSDictionary *dic1= [[NSDictionary alloc]initWithObjectsAndKeys:@"value1",@"key1",@"value2",@"key2", nil];// 先写值再写键;
            NSLog(@"%@",dic1);
            // + (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...   类方法创建字典并赋值
            NSDictionary *dic2=[NSDictionary dictionaryWithObjectsAndKeys:@"value",@"key" ,nil];
            NSLog(@"%@",dic2);
        
            //键值对的值是任意类型的
            Person *p1 = [[Person alloc] initWithname:@"肖明瑛" andage:17];
            Person *p2 = [[Person alloc] initWithname:@"吕莎" andage:19];
            Person *p3 =[[Person alloc] initWithname:@"巫婷" andage:18];
            Person *p4 = [[Person alloc] initWithname:@"胡琳" andage:18];
            
            NSDictionary *dic4 = @{
                                   @"person1":p1,
                                   @"person2":p2,
                                   @"person3":p3,
                                   @"person4":p4
                                   };
            
            NSLog(@"%@",dic4);
            
           
            //@property (readonly) NSUInteger count;获取字典中键值对的个数
            NSLog(@"%lu",[dic4 count]);
            
            //- (nullable ObjectType)objectForKey:(KeyType)aKey;根据key取出对应的value值
            NSLog(@"%@",[dic4 objectForKey:@"person1"]);
            //或者
            NSLog(@"%@",dic4[@"person1"]);
            
            //@property (readonly, copy) NSArray<KeyType> *allKeys;获取字典中所有的key值
            NSArray *array2 = [dic4 allKeys];
            NSLog(@"%@",array2);
            //获取所有的value值
            NSArray *array3 = [dic4 allValues];
            NSLog(@"%@",array3);
            //- (NSArray<KeyType> *)allKeysForObject:(ObjectType)anObject;根据value值取出key值 可能不止一个
            NSArray *array = [dic4 allKeysForObject:p1];
            NSLog(@"%@",array);
            
        
            //可变的字典
            //初始化方法:+ (instancetype)dictionaryWithCapacity:(NSUInteger)numItems; 开辟内存空间
        //    NSMutableDictionary *mutable=[NSMutableDictionary dictionaryWithCapacity:10 ];//每次开辟10个内存空间 用完再开辟
            //NSMutableDictionary *mutable = [[NSMutableDictionary alloc] initWithCapacity:10];
            
            
            //或者:+ (instancetype)dictionary;
           // NSMutableDictionary *mutable2 = [NSMutableDictionary dictionary];
            //NSMutableDictionary *mutable2 = [NSMutableDictionary new];
          //  NSMutableDictionary *mutable = [[NSMutableDictionary alloc] init];
            
            
            //常用方法
           // - (void)setValue:(nullable id)value forKey:(NSString *)key; 添加元素              在可变的数组中  重复的key值会覆盖前面的(相当于更改)
            NSMutableDictionary *dic5 = [NSMutableDictionary dictionary];
            [dic5 setValue:@"xmy" forKey:@"person5"];
            NSLog(@"%@",dic5);
            [dic5 setValue:@"hyt" forKey:@"person5"];
            NSLog(@"%@",dic5);
            //- (void)setObject:(ObjectType)anObject forKey:(KeyType <NSCopying>)aKey;添加键值对
            [dic5 setObject:@"" forKey:@"person5"];
            NSLog(@"%@",dic5);
        
        
            
            //- (void)removeObjectForKey:(KeyType)aKey; 根据key值删除元素
           [dic5 removeObjectForKey:@"person5"];
            NSLog(@"%@",dic5);
            [dic5 removeObjectsForKeys:@[@"person3",@"person2"]];//删除多个值
            
            //- (void)removeAllObjects;删除全部元素
            [dic5 removeAllObjects];
            
            
           
            
            
            
        }
        return 0;
    }
  • 相关阅读:
    用面向对象的方法重写选项卡
    js 深入理解原型模式
    ECMAScript中的两种属性
    引用类型
    js 变量、作用域和内存问题
    html5 canvas画布尺寸与显示尺寸
    网页画板制作
    了解数组中的队列方法,DOM中节点的一些操作
    JavaScript中的数组对象遍历、读写、排序等操作
    this在方法赋值过程中无法保持(隐式丢失)
  • 原文地址:https://www.cnblogs.com/kinghyt/p/10403538.html
Copyright © 2020-2023  润新知