ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

oc基础类型之NSDictionary

2019-02-19 21:48:46  阅读:285  来源: 互联网

标签:oc NSLog NSDictionary NSMutableDictionary Person dic4 dic5 类型


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

 

标签:oc,NSLog,NSDictionary,NSMutableDictionary,Person,dic4,dic5,类型
来源: https://www.cnblogs.com/kinghyt/p/10403538.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有