如何解决有关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 举报,一经查实,本站将立刻删除。