OC 运用Dictionary & Array 实现省市区分类

 1 NSString *filePath = @"/Users/dlios/Downloads/area.txt";
 2     NSError *error = nil;
 3     NSString *buffer = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:&error];
 4     if (error) {
 5         NSLog(@"error : %@", [error localizedDescription]);
 6         exit(1);
 7     }
 8     NSLog(@"%@", buffer);
 9     NSArray *dataArray = [buffer componentsSeparatedByString:@"\n"];
10     NSLog(@"%@", dataArray);
11     NSMutableArray *provinces = [NSMutableArray array];
12     for (NSString *s in dataArray) {
13         // 找到 省
14         if (![s hasPrefix:@" "]) {
15             NSMutableArray *citys = [NSMutableArray array];
16             NSDictionary *pDic = [NSDictionary dictionaryWithObjectsAndKeys:s, @"name", citys, @"cities", nil];
17             [provinces addObject:pDic];
18         }
19         // 找到 城市
20         if ([s hasPrefix:@"  "] && ![s hasPrefix:@"    "]) {
21             NSMutableArray *areas = [NSMutableArray array];
22             NSDictionary *cDic = [NSDictionary dictionaryWithObjectsAndKeys:s, @"name", areas, @"areas", nil];
23             NSDictionary *pDic = [provinces lastObject];
24             NSMutableArray *cities = [pDic objectForKey:@"cities"];
25             [cities addObject:cDic];
26         }
27         // 找到 区
28         if ([s hasPrefix:@"    "]) {
29             NSDictionary *pDic = [provinces lastObject];
30             NSArray *cities = [pDic objectForKey:@"cities"];
31             NSDictionary *cDic = [cities lastObject];
32             NSMutableArray *areas = [cDic objectForKey:@"areas"];
33
34             [areas addObject:s];
35         }
36     }
37     NSLog(@"%@", provinces);
38
39     for (NSDictionary *pDic in provinces) {
40         if ([[pDic objectForKey:@"name"] hasPrefix:@"山东"]) {
41             NSArray *cities = [pDic objectForKey:@"cities"];
42             for (NSDictionary *cDic in cities) {
43                 if ([[cDic objectForKey:@"name"] hasPrefix:@"  烟台"]) {
44                     NSArray *areas = [cDic objectForKey:@"areas"];
45                     for (NSString *areaName in areas) {
46                         NSLog(@"%@", areaName);
47                     }
48                 }
49             }
50         }
51     }
时间: 2024-09-22 21:37:34

OC 运用Dictionary & Array 实现省市区分类的相关文章

OC语言类的本质和分类

OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一个方法 Study方法的实现 测试程序: (二)分类的使用注意 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警

李洪强iOS开发之OC语言类的深入和分类

OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一个方法 Study方法的实现 测试程序: (二)分类的使用注意 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警

OC语言类的深入和分类

一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件结构图: 在分类中添加一个方法 Study方法的实现 测试程序: (二)分类的使用注意 (1)分类只能增加方法(包括类方法和对象方法),不能增加成员变量 (2)在分类方法的实现中可以访问原来类中的成员变量: (3)分类中可以重新实现原来类中的方法,但是会覆盖掉原来的方法,导致原来的方法无法再使用(警告): (4)方法调用的

OC字典练习 -- 中国省市区

// //  main.m //  oc06  -- 省市区字典 // //  Created by dllo on 15/7/22. //  Copyright (c) 2015年 Gaozi. All rights reserved. // #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { //准备工作 NSString *path = @"/Users/dllo/Desktop

黑马程序员-OC特有语法:分类category,给NSString增加方法计算字符串中数字的个数

1:分类的使用场景:想对一个类,扩充一些功能,而又不改变原来类的模型,也不用继承,这时OC中的特有语法:分类可以做到: 当然分类也是一个类,也需要声明和实现,声明在.h文件中,实现在.m文件中,格式如下 // 声明 @interface  类名  (分类名称) @end // 实现 @implementation 类名 (分类名称) @end 2:分类的好处,当一个类比较庞大时,不同的部分可以放到不同的分类中,也方便团队中类的开发: 3:分类使用注意: a:分类不能增加成员变量,只能对原类增加方

OC高级编程——深入block,如何捕获变量,如何存储在堆上

首先先看几道block相关的题目 这是一篇比较长的博文,前部分是block的测试题目,中间是block的语法.特性,block讲解block内部实现和block存储位置,请读者耐心阅读.具备block基础的同学,直接调转到block的实现 下面列出了五道题,看看能否答对两三个.主要涉及block栈上.还是堆上.怎么捕获变量.答案在博文最后一行 //-----------第一道题:-------------- void exampleA() { char a = 'A'; ^{ printf("%

PHP.32-TP框架商城应用实例-后台10-商品分类-需求分析、创建无限级商品分类,递归

商品管理需求分析 1.实现商品无限级分类管理[类似京东三级分类] 2.添加商品时要指定商品属于一个主分类和多个扩展分类[扩展分类可以是其他主分类] 3.商品列表中可以根据分类搜索商品 a) 搜索一个分类小的商品时,这个分类所有子分类下的商品也应该被搜索出来 b) 搜索时要考虑商品的主分类和扩展分类 无限级的商品分类 思路:递归打印树形结构:递归查找分类所有子分类[以便删除时使用] 1.建表 drop table if exists p39_category; create table p39_c

递归的一些应用(二)无限极分类

用递归的方法实现无限极分类 通常我在写项目的时候,在写一些例如商城分类的时候会实现对应分类的上级分类,或者其它项目部门管理的上级部门的时候一般就会用到无限极分类来进行分类 第一步:首先在数据表设计的时候,如果要实现无限极分类,一般我会在数据表多添加一个字段pid,下面我通过一张新建的数据表来说明一下, (1)建表: -- ---------------------------- -- Table structure for pid -- ----------------------------

OC学习笔记之Foundation框架NSNumber、NSValue和NSDate(转)

一.NSNumber OC数组类NSArray,它只能存放 OC的对象,对于基本的数据类型确无能为力,但是实际编程中经常要把基本的数据如int.float,结构体存放的OC数组中,怎么办?这里的 NSNumber就有用了,它能够把基本数据类型包装成OC对象. // 将整形包装成OC对象 NSNumber *num1 = [NSNumber numberWithInt:120]; // 将浮点形包装成OC对象 NSNumber *num2 = [NSNumber numberWithDouble: