前几天发了一个 字典与数组嵌套的 划分省市区的代码,今天给大家带来的是用类保存数据的方式 相比之下代码量更加 简洁
首先需要建立三个类 Province City Zone
Province类中建立了 proName 属性来保存 当前的省 cityArray数组属性来保存该省的城市,
City类中创创建了 cityName 来保存当前市的名字 zoneArray数组 来存放属于他的区
Zone类 ,这个类可有可无,为了看起来统一 在里面建立一个 zoneName 属性 来存放区名字
在写初始化函数时(省,市),仅传进来一个name 即可 在初始化函数中直接 定义一个数组 ,
-(id)initWithProName:(NSString *)proName
{
self =[super init];
if (self) {
_proName = proName;
_citysArray = [NSMutableArray array];
}
return self;
}
以下是主函数代码片段
#import <Foundation/Foundation.h>
#import "Province.h"
#import "City.h"
#import "Zone.h"
<span style="font-family: Arial, Helvetica, sans-serif;">int main(int argc, const char * argv[]) {</span>
@autoreleasepool {
NSString *path = @"/Users/dllo/Desktop/项目程序源文件/Objective-C程序/prio/prio/area.txt";
NSString *text = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
NSArray * lines = [text componentsSeparatedByString:@"\n"];
//用来存放所有的 省对象
NSMutableArray *country = [NSMutableArray array];
//遍历
for (NSString *line in lines) {
if (![line hasPrefix: @" "]) {
Province *province = [[Province alloc]initWithProName:line]; //创建一个省 在省的初始化函数中自动建立了cityArray数组
//
[country addObject:province];
}else if ( ![line hasPrefix:@" " ] )
{
City *city = [[City alloc ] initWithCityName:line];
[[[country lastObject ] citysArray] addObject:city];
}else{
Zone *zone = [[Zone alloc] initWithZoneName:line];
[[[[[country lastObject ] citysArray] lastObject ] zonesArray ] addObject:zone];
}
}
//遍历输出下
for (Province *pro in country) {
NSLog(@"%@",[pro proName]);
for (City *city in [pro citysArray]) {
NSLog(@"%@",[city cityName]);
for (Zone *zone in [city zonesArray]) {
NSLog(@"%@",[zone zoneName]);
}
}
}
}
return 0;
}