微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

有关NSDictionary初始化的问题

如何解决有关NSDictionary初始化的问题

结果是4 2 3,但是此NSDictionary的初始化过程中发生了什么? 这是因为它的分配只是在第一次执行,而忽略了其余分配给相同键的分配?还是因为它的分配以反向顺序执行?

NSDictionary *dic = @{
                          @"a":@"4",@"b":@"2",@"c":@"3",@"a":@"1",@"b":@"5",@"c":@"6",};
    NSLog(@"luozhiyong,%@",dic[@"a"]);
    NSLog(@"luozhiyong,dic[@"b"]);
    NSLog(@"luozhiyong,dic[@"c"]);

解决方法

摘自NSDictionary的文档:

NSDictionary 。与唯一键关联的对象的静态集合。

除了提供的初始化程序(如initWithObjects:forKeys :)之外,您还可以使用字典文字创建NSDictionary对象。

NSDictionary *dictionary = @{
       @"anObject" : someObject,@"helloString" : @"Hello,World!",@"magicNumber" : @42,@"aValue" : someValue
};

在Objective-C中,编译器生成的代码对底层的DictionaryWithObjects:forKeys:count:方法进行调用。

摘自dictionaryWithObjects:forKeys:count的文档:

此方法逐步遍历对象和键数组,并在新字典中创建条目。

结果

NSDictionary *dic = @{
                      @"a":@"4",@"b":@"2",@"c":@"3",@"a":@"1",@"b":@"5",@"c":@"6",};

是不可预测的,在Foundation的其他版本中可能有所不同。在macOS 10.13.6上,重复的密钥将被忽略。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。