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;
}

 

上一篇:NSURLConnection发送网络请求


下一篇:凸壳优化dp/spole trick