• iOS之NSDictionary和NSArray以及NSMutableDictionary和NSMutableArray:将不再是问题


    • 字典的key就相当于数组的下标,怎样操作数组你就学会了怎样才做字典:来感受一把
    • 需要注意的是读取文件的类型要集合.plist文件的rooty:否则将不能读入文件



    // 1.全国省市:得到的是省和市

           // 读取文件路径

            NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/3.Chinacities.plist"];

     // dic[@"State"] 此时就是一个集合,通过关键字得到的就是其对应的value值,字典的简写

            for (NSDictionary *dic in arr)

            {

    // 第一层嵌套

               NSLog(@"%@", dic[@"State"]);

                // dic[@"Cities"] key下的value值是一个集合,此时它就是一个集合:通过快速枚举(for…in…)即可取得集合内对象

                for (NSDictionary *dict in dic[@"Cities"])

                {

                    NSLog(@"%@", dict[@"city"]);

                }

            }

     


    // 2.只包含地级市:得到的直辖市是其地区

          

    // 这个就相当于是遍历集合

            NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/2.只包含地级市.plist"];

            

            NSLog(@"%i", [arr containsObject:@"北京"]);

            for (NSString *str in arr)

            {

                NSLog(@"%@", str);

            }

     


    // 3.按首字母排序的地级市:两个字典的Value都为集合:得到的是直辖市

        // 一层集合包含两个字典:一个字典的value值是集合,另一个只是字符串   

            NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/4.按首字母排序的地级市.plist"];

            

            for (NSDictionary *dic in arr)

            {

    // 通过keydic[@"title"]取出的就是对应的字符串,因为集合内每个key都一样,因此遍历即可取出全部

                NSLog(@"%@", dic[@"title"]);

                

                for (NSString *str in dic[@"cities"])

                {

                    NSLog(@"%@", str);

                }

     


    // 4.按首字母排序:得到的是市以及其拼音和每个字的首字母

           

            NSArray *arr = [NSArray arrayWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/5.包含拼音的市区.plist"];

    // 集合内存了四个字典,其中三个字典的value值都是字符串,因此可以在通过遍历集合的时候通过其关键字取值        

            for (NSDictionary *dic in arr)

            {

                NSLog(@"%@, %@, %@", dic[@"name"], dic[@"pinYin"], dic[@"pinYinHead"]);

    // dic[@"regions"]此时是一个集合(regions:为字典的key,取其value即为一个集合),遍历集合即得到了集合内字符串

                for (NSDictionary *dict in dic[@"regions"])

                {

                    NSLog(@"%@", dict[@"name"]);

                }

            }

     


    // 5.全国省市区:第一存取对象是字典,因此不能直接使用集合接收(字典的嵌套)

            

    // 注意:因为.plist文件Root为Dictionary,因此需要使用NSDictionary类型的指针来接收。集合接收为null

             NSDictionary *dic = [NSDictionary dictionaryWithContentsOfFile:@"/Users/Mu/Documents/MyXcode-MyNotes/OC/Read.plist/Read.plist/plists/1.全国省市区.plist"];

    // 字典嵌套字典。最后一层key对应的value值为集合,遍历集合即得到值:最后一层集合接收对象的指针为NSString,每次遍历都是取字典的所有value值

            for (NSDictionary *key1 in dic.allValues)

            {

                for (NSDictionary *key2 in key1.allValues)

                {

                    for (NSDictionary *key3 in key2.allValues)

                    {

                        // 此时字典得到的是集合,通过遍历集合就得到了所有的省市

                        for (NSArray *key4 in key3.allValues)

                        {

                            for (NSString *str in key4)

                            {

                                NSLog(@"%@", str);

                            }

                        }

                    }

                }

            }

     

  • 相关阅读:
    Apache Tomcat 6.0 Tomcat6 服务因 1 (0x1) 服务特定错误而停止
    PaodingAnalysis 提示 "dic home should not be a file, but a directory"
    mappingDirectoryLocations
    多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
    java.util.ResourceBundle
    JSP验证码
    Error: [ng:areq] Argument 'LoginCtrl' is not a function, got undefined
    《横向领导力》笔记
    Java执行定时任务
    2017第43周三
  • 原文地址:https://www.cnblogs.com/pruple/p/5272974.html
Copyright © 2020-2023  润新知