oc地图
来源:互联网 发布:普通话考试难不难知乎 编辑:程序博客网 时间:2024/06/05 23:49
.h文件
#import <Foundation/Foundation.h>
@interface TreeNode : NSObject
@property (nonatomic, retain)NSString *name;
@property (nonatomic, retain)NSMutableArray *subnodes;//子节点
//父对象会强引用子对象,子对象不能强引用父对象(子对象强引用父对象会造成:循环引用会造成内存空洞)
//父对象在生命周期内会对子对象引用计数器+1,如果子对象强引用父对象会造成父对象引用计数器+1,彼此释放时都持有最后一次造成内存空洞
@property (nonatomic, assign)TreeNode *superNode; //父节点
- (id)initWithName:(NSString *)name;
+ (id)treeNodeWithName:(NSString *)name;
- (TreeNode *)getSubnodeWithName:(NSString *)name;
- (TreeNode *)getAnyNodeWithName:(NSString *)name;
//遍历所有节点
+ (void)traverseAllNode:(TreeNode *)root;
@end
.m文件
#import "TreeNode.h"
@implementation TreeNode
- (void)dealloc
{
[_name release];
[_subnodes release];
[super dealloc];
}
- (id)initWithName:(NSString *)name
{
self = [super init];
if (self) {
[self setName:name];
[self setSubnodes:[NSMutableArrayarray]];
}
return self;
}
+ (id)treeNodeWithName:(NSString *)name
{
TreeNode *node = [[TreeNodealloc]initWithName:name];
return [node autorelease];
}
- (TreeNode *)getSubnodeWithName:(NSString *)name
{
TreeNode *node = nil;
for (TreeNode *tnin [self subnodes]) {
if ([[tn name]isEqualToString:name]) {
node = tn;
break;
}
}
return node;
}
- (TreeNode *)getAnyNodeWithName:(NSString *)name
{
TreeNode *node = nil;
if ([[self name] isEqualToString:name]) {
node = self;
} else {
for (TreeNode *snodein self.subnodes) {
node = [snode getAnyNodeWithName:name];
if (node != nil) {
break;
}
}
}
return node;
}
//树形结构的遍历就是递归
+ (void)traverseAllNode:(TreeNode *)root
{
NSLog(@"%@", [rootname]);
for (TreeNode *nodein [root subnodes]) {
//类方法中self代表类对象
[self traverseAllNode:node];
[TreeNode traverseAllNode:node];
}
}
.m文件
#import <Foundation/Foundation.h>
#import "TreeNode.h"
int main(int argc, const char * argv[]) {
NSString *filePath =@"/Users/dlios/Desktop/666666/20150302/20150302/area.txt";
NSString *buffer = [NSStringstringWithContentsOfFile:filePath encoding:NSUTF8StringEncodingerror:nil];
NSArray *array = [buffercomponentsSeparatedByString:@"\n"];
NSCharacterSet *cSet = [NSCharacterSetcharacterSetWithCharactersInString:@" 0123456789"];
TreeNode *root = [TreeNodetreeNodeWithName:@"root"];
//创建子节点
//找到父节点
for (NSString *sin array) {
if (! [s hasPrefix:@" "]) {
NSString *provinceName = [s stringByTrimmingCharactersInSet:cSet];
TreeNode *pNode = [TreeNodetreeNodeWithName:provinceName];
[root.subnodes addObject:pNode];
}
if ([s hasPrefix:@" "] && ! [shasPrefix:@" "]) {
TreeNode *pNode = [root.subnodeslastObject];
NSString *cityName = [s stringByTrimmingCharactersInSet:cSet];
TreeNode *cNode = [TreeNodetreeNodeWithName:cityName];
[pNode.subnodes addObject:cNode];
}
if ([s hasPrefix:@" "]) {
TreeNode *pNode = [root.subnodeslastObject];
TreeNode *cNode = [pNode.subnodeslastObject];
NSString *districtName = [s stringByTrimmingCharactersInSet:cSet];
TreeNode *dNode = [TreeNodetreeNodeWithName:districtName];
[cNode.subnodes addObject:dNode];
}
}
for (TreeNode *pNodein [root subnodes]) {
if ([[pNode name]isEqualToString:@"黑龙江"]) {
for (TreeNode *cNodein [pNode subnodes]) {
if ([[cNode name] isEqualToString:@"齐齐哈尔市"]) {
for (TreeNode *dNodein [cNode subnodes]) {
NSLog(@"%@", [dNodename]);
}
}
}
}
}
return 0;
}
输出部分
2015-03-02 10:09:45.782 20150302[1500:303] 龙沙区
2015-03-02 10:09:45.802 20150302[1500:303] 建华区
2015-03-02 10:09:45.802 20150302[1500:303] 铁锋区
2015-03-02 10:09:45.803 20150302[1500:303] 昂昂溪区
2015-03-02 10:09:45.803 20150302[1500:303] 富拉尔基区
2015-03-02 10:09:45.804 20150302[1500:303] 碾子山区
2015-03-02 10:09:45.804 20150302[1500:303] 梅里斯区
2015-03-02 10:09:45.805 20150302[1500:303] 讷河市
2015-03-02 10:09:45.805 20150302[1500:303] 龙江县
2015-03-02 10:09:45.806 20150302[1500:303] 依安县
2015-03-02 10:09:45.806 20150302[1500:303] 泰来县
2015-03-02 10:09:45.806 20150302[1500:303] 甘南县
2015-03-02 10:09:45.807 20150302[1500:303] 富裕县
2015-03-02 10:09:45.807 20150302[1500:303] 克山县
2015-03-02 10:09:45.808 20150302[1500:303] 克东县
2015-03-02 10:09:45.808 20150302[1500:303] 拜泉县
Program ended with exit code: 0
- oc地图
- OC地图简洁版
- oc地图带字典
- Oc LocateMap(地图定位)
- Oc CLGeocoder(地图解析)
- Oc 地图锚点
- Oc 地图覆盖层
- ios之oc省市区小地图
- 高德地图关键字搜索oc版
- 百度地图 API 使用过程记录(OC&SWIFT)
- IOS-OC-百度地图批量默锚点-点击视图自定义
- OC-百度地图计算两个坐标之间的距离
- oc
- oc
- OC
- OC
- OC
- oc
- leetcode Pow(x,n)
- 播放gif 最简单直接的方法,但是方便灵活的用
- shader漫反射模拟
- C/S和B/S和RIA
- solr
- oc地图
- 一组python用于验证数据的函数
- TCP、UDP和HTTP
- HDU 3613 Best Reward(求前后缀回文 拓展KMP or Manacher)
- 复习数据结构:排序(三)——选择排序
- Android的Gradle插件(1):用Gradle构建你的android程序
- Word Break II
- [UOJ 28][IOI 2014]Friend(DP)
- acm2012