通讯录实现草图:

代码:

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <UIApplicationDelegate> @property (retain, nonatomic) UIWindow *window; @end
#pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "AppDelegate.h"
#import "ContactListViewController.h"
#import "MainNavigationController.h"
#import "FirstLaunchViewController.h"
@interface AppDelegate () @end @implementation AppDelegate
- (void)dealloc {
[_window release];
[super dealloc];
} - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
//判断是否第一次安装启动
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
//如果是 则指定用户引导页为window的根视图控制器
if (![defaults boolForKey:@"firstLaunch"]) {
FirstLaunchViewController *firstVC = [[FirstLaunchViewController alloc] init];
self.window.rootViewController = firstVC;
[firstVC release];
} else {
//否则,进入程序的主页面
//设置根视图控制器
ContactListViewController *mainVC = [[ContactListViewController alloc] initWithStyle:UITableViewStylePlain];
//创建导航控制器
MainNavigationController *navi = [[MainNavigationController alloc] initWithRootViewController:mainVC];
//指定为window的根视图控制器
self.window.rootViewController = navi;
//释放所有权
[mainVC release];
[navi release];
} return YES;
}

AppDelegate文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
#import "Contact.h"
#import <UIKit/UIKit.h> @interface AddressBookHelper : NSObject //提供相应的方法给对应的controller + (NSInteger)numberOfSection; //返回分区个数 + (NSInteger)numberOfRowsInSection:(NSInteger)section; //返回对应分区的行数 + (NSString *)titleForHeaderInSection:(NSInteger)section;//返回对应分区的title + (NSArray *)sectionIndexTitles; //返回右侧索引标题 //delete
+ (BOOL)isNeedToDeleteWholeSection:(NSInteger)section; //是否删除整个分区 + (void)deleteWholeSection:(NSInteger)section;//删除整个分区 + (void)deleteRowAtIndexPath:(NSIndexPath *)indexPath; //删除一行 //move
+ (void)moveFromIndexPath:(NSIndexPath *)sourceIndexPath ToIndexPath:(NSIndexPath *)destinationIndexPath; //返回对应行所需的联系人
+ (Contact *)contactAtIndexPath:(NSIndexPath *)indexPath; //添加联系人
+ (void)addContact:(Contact *)newContact; //保存数据
+ (void)saveData; @end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- /**
* AddressBookHelper 是通讯录列表界面的助手类,帮助列表界面做数据处理相关的内容,为ContactListViewController瘦身,该类可有可无。
M层的类:和数据有关的类。数据解析类,数据请求类,数据本地化类。
*/ #define kPlistName @"contacts" #import "AddressBookHelper.h"
#import "NSString+Addition.h" @interface AddressBookHelper ()
@property (nonatomic, retain) NSMutableDictionary *dataSource;//存储外层信息的大字典
@property (nonatomic, retain) NSMutableArray *sortedKeys;//存储排好序的key
@end @implementation AddressBookHelper
static AddressBookHelper *helper;
//单例方法
+ (AddressBookHelper *)defaultHelper {
//安全处理 保证多线程下的安全
@synchronized(self) {
if (!helper) {
helper = [[AddressBookHelper alloc] init];
[helper readDataFromPlist];//读取本地plist文件
}
}
return helper;
} //获取本地文件
- (void)readDataFromPlist {
//1.读取本地文件 并获取其中的字典信息
NSString *filePath = [[NSBundle mainBundle] pathForResource:kPlistName ofType:@"plist"];
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath];
self.dataSource = [NSMutableDictionary dictionaryWithCapacity:dict.count]; //2.1遍历字典 得到key
for (NSString *key in dict) {
//2.2通过key 获取联系人分组数组
NSArray *group = dict[key];
//2.3创建一个可变数组 存放联系人对象
NSMutableArray *perArr = [NSMutableArray arrayWithCapacity:group.count];
//2.4遍历分组数组 得到联系人信息小字典
for (NSDictionary *dic in group) {
//2.5将小字典信息封装成对象 存放到数组中
Contact *contact = [[Contact alloc] initWithDic:dic];
[perArr addObject:contact];
[contact release];
}
//将存放对象的数组及其对应key 存放到字典中
[self.dataSource setObject:perArr forKey:key];
}
//获取排好序的key
NSArray *sortedArr = [[_dataSource allKeys] sortedArrayUsingSelector:@selector(compare:)];
self.sortedKeys = [NSMutableArray arrayWithArray:sortedArr];
} //返回分区个数
+ (NSInteger)numberOfSection {
return [self defaultHelper].dataSource.count;
// return [self defaultHelper].sortedKeys.count;
}
//返回对应分区的行数
+ (NSInteger)numberOfRowsInSection:(NSInteger)section {
return [helper.dataSource[helper.sortedKeys[section]] count];
}
//返回对应分区的title
+ (NSString *)titleForHeaderInSection:(NSInteger)section {
return helper.sortedKeys[section];
}
//返回右侧索引标题
+ (NSArray *)sectionIndexTitles {
return helper.sortedKeys;
}
//delete
//是否删除整个分区
+ (BOOL)isNeedToDeleteWholeSection:(NSInteger)section {
//获取对应分组的联系人数组
NSArray *group = helper.dataSource[helper.sortedKeys[section]];
//如果该分组元素个数为1 代表只有一人
if (group.count == ) {
return YES;//则需要删除整个分区
}
return NO;//否则,不需要
}
//删除整个分区
+ (void)deleteWholeSection:(NSInteger)section {
//1.获取对应的key
NSString *key = helper.sortedKeys[section];
//2.从字典删除key对应的分组数组
[helper.dataSource removeObjectForKey:key];
//3.从排好序的key数组中移除该key值
[helper.sortedKeys removeObject:key];
} //删除一行
+ (void)deleteRowAtIndexPath:(NSIndexPath *)indexPath {
//1.获取对应的分组
NSMutableArray *group = helper.dataSource[helper.sortedKeys[indexPath.section]];
//2.从对应分组中移除该元素
[group removeObjectAtIndex:indexPath.row];
} //move
+ (void)moveFromIndexPath:(NSIndexPath *)sourceIndexPath ToIndexPath:(NSIndexPath *)destinationIndexPath {
//获取对应分组数组
NSMutableArray *group = helper.dataSource[helper.sortedKeys[sourceIndexPath.section]];
//获取对应的联系人
Contact *contact = [group[sourceIndexPath.row] retain];
//从对应位置删除
[group removeObjectAtIndex:sourceIndexPath.row];
//插入到最新的位置
[group insertObject:contact atIndex:destinationIndexPath.row];
//释放所有权
[contact release];
} //返回对应行所需的联系人
+ (Contact *)contactAtIndexPath:(NSIndexPath *)indexPath {
return helper.dataSource[helper.sortedKeys[indexPath.section]][indexPath.row];
} //添加联系人
+ (void)addContact:(Contact *)newContact {
//1.获取联系人姓名 转化为拼音 并取姓名首字母的大写
NSString *key = [newContact.name firstCharacter];
//安全处理 判断key是否存在
if (!key) {
return;
}
//2.获取分组的数组
NSMutableArray *group = helper.dataSource[key];
//3.如果该分组不存在 则建立该分组
if (!group) {
group = [NSMutableArray array];
//新建分组 添加到字典中
[helper.dataSource setObject:group forKey:key];
//对应分组的key添加到对应数组中,并排序
[helper.sortedKeys addObject:key];
[helper.sortedKeys sortUsingSelector:@selector(compare:)];
}
//存在该分组,则直接把联系人添加到数组中
[group addObject:newContact];
} + (void)saveData {
#warning 待完善
} - (void)dealloc {
self.dataSource = nil;
self.sortedKeys = nil;
[super dealloc];
} @end

AddressBookHelper文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------

#import <UIKit/UIKit.h>

@interface UIColor (Addition)

+ (UIColor *)lightGreenColor;

@end

#pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "UIColor+Addition.h" @implementation UIColor (Addition)
+ (UIColor *)lightGreenColor {
return [self colorWithRed: / 255.0 green: / 255.0 blue: / 255.0 alpha:1.0];
} @end

UIColor+Addition文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------

#import <Foundation/Foundation.h>

@interface NSString (Addition)

- (NSString *)chineseToPinYin;

- (NSString *)firstCharacter;

@end

#pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "NSString+Addition.h"
#import "ChineseToPinyin.h"
@implementation NSString (Addition)
//中文转拼音
- (NSString *)chineseToPinYin {
return [ChineseToPinyin pinyinFromChiniseString:self];
}
//获取字符串的首字符
- (NSString *)firstCharacter {
return [[[self chineseToPinYin] substringToIndex:] uppercaseString];
}
@end

NSString+Addition文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h> @interface MainNavigationController : UINavigationController @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "MainNavigationController.h"
#import "UIColor+Addition.h" @interface MainNavigationController () @end @implementation MainNavigationController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self configureNavigationBar];
}
//配置导航条公共的属性
- (void)configureNavigationBar {
//导航条渲染颜色
self.navigationBar.barTintColor = [UIColor lightGreenColor];
//导航条的内容渲染颜色
self.navigationBar.tintColor = [UIColor whiteColor];
//导航条文字属性
self.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

MainNavigationController文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------

#import <UIKit/UIKit.h>

@interface FirstLaunchViewController : UIViewController

@end

#pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#define FIRST @"firstLaunch" #define kImageCount 4
#define kPictureName @"information"
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
#define kScrollTag 111
#define kPageControlTag 222
#import "FirstLaunchViewController.h"
#import "ContactListViewController.h"
#import "MainNavigationController.h"
@interface FirstLaunchViewController () <UIScrollViewDelegate> @end @implementation FirstLaunchViewController - (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
//布局子视图
[self layoutSubviews];
} - (void)layoutSubviews {
[self setUpScrollView];//布局scrollView
[self setUpPageControl];//布局pageControl
} - (void)setUpScrollView {
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
scroll.tag = kScrollTag;
//设置内容区域大小
scroll.contentSize = CGSizeMake(kScreenWidth * kImageCount, kScreenHeight);
//整页滑动
scroll.pagingEnabled = YES;
//不显示水平滚动条
scroll.showsHorizontalScrollIndicator = NO;
//设置代理
scroll.delegate = self;
[self.view addSubview:scroll];
[scroll release];
//放置引导图片
for (int i = ; i < kImageCount; i++) {
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(kScreenWidth * i, , kScreenWidth, kScreenHeight)]; [imageView setImage:[UIImage imageNamed:[[NSBundle mainBundle] pathForResource:[NSString stringWithFormat:@"%@%02d@2x", kPictureName, i + ] ofType:@"png"]]];
[scroll addSubview:imageView];
[imageView release];
//最后一张添加轻拍手势
if (i == kImageCount - ) {
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[imageView addGestureRecognizer:tap];
//打开imageView的用户交互
imageView.userInteractionEnabled = YES;
[tap release];
} }
} - (void)setUpPageControl {
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake((kScreenWidth - ) / , kScreenHeight - , , )];
pageControl.tag = kPageControlTag;
//设置总页数
pageControl.numberOfPages = kImageCount;
pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];//其余页点的颜色
pageControl.currentPageIndicatorTintColor = [UIColor orangeColor];//当前页点的颜色
[self.view addSubview:pageControl];
[pageControl release];
} #pragma -UIScrollViewDelegate-
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
UIPageControl *page = (UIPageControl *)[self.view viewWithTag:kPageControlTag];
page.currentPage = scrollView.contentOffset.x / kScreenWidth;
} #pragma mark -轻拍进入程序主页面-
- (void)handleTap:(UITapGestureRecognizer *)tap {
//当点击最后一张时,意味着用户引导页已结束。将对应的key保存到 NSUserDefaults
NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
[user setBool:YES forKey:FIRST];
//立即更新(同步),立即执行保存操作
[user synchronize];
//进入程序主界面
ContactListViewController *mainVC = [[ContactListViewController alloc] init];
MainNavigationController *navi =[[MainNavigationController alloc] initWithRootViewController:mainVC];
//更改window的根视图控制器 为主界面的视图控制器mainVC
[UIApplication sharedApplication].keyWindow.rootViewController = navi;
[mainVC release];
[navi release]; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

FirstLaunchViewController文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h> @interface AddContactViewController : UIViewController @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "AddContactViewController.h"
#import "AddContactView.h"
#import "AddressBookHelper.h"
@interface AddContactViewController () <UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIActionSheetDelegate> @end @implementation AddContactViewController //重写loadView 指定根视图
- (void)loadView {
AddContactView *add = [[AddContactView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.view = add;
[add release];
} - (void)customizedNaviBar {
self.navigationItem.title = @"添加联系人";
//left
UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"clsose"] style:UIBarButtonItemStylePlain target:self action:@selector(handleClose:)];
self.navigationItem.leftBarButtonItem = left;
[left release];
//right
UIBarButtonItem *right = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"doneR"] style:UIBarButtonItemStylePlain target:self action:@selector(handleDone:)];
self.navigationItem.rightBarButtonItem = right;
[right release]; }
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self customizedNaviBar];
[self addTapGesture];//添加轻拍手势
} - (void)addTapGesture {
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[((AddContactView *)self.view).avaterView addGestureRecognizer:tap];
[tap release];
}
//设置头像
- (void)handleTap:(UITapGestureRecognizer *)tap {
//调用系统相机或图库
UIActionSheet *myActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"从相册中选取", nil];
[myActionSheet showInView:self.view];
[myActionSheet release];
}
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
//呼出的菜单按钮点击后的响应
if (buttonIndex == actionSheet.cancelButtonIndex)
{
NSLog(@"取消");
}else{
//相机可用时初始化 pikerController为UIImagePickerControllerSourceTypeCamera
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
switch (buttonIndex)
{
case : //打开照相机拍照
sourceType = UIImagePickerControllerSourceTypeCamera;
break; case : //打开本地相册
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break;
}
if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
{
//如果源类型 UIImagePickerControllerSourceTypeCamera 不可用时 设置UIImagePickerControllerSourceTypePhotoLibrary 为源类型
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化
picker.delegate = self;
picker.allowsEditing = YES;//设置可编辑
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];//进入照相界面或相册界面
[picker release];
}
} - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
((AddContactView *)self.view).avaterView.image = [info objectForKey:UIImagePickerControllerEditedImage];//use编辑后的照片;
[self dismissViewControllerAnimated:YES completion:nil];
} #pragma mark - handle Action -
//关闭 放弃保存
- (void)handleClose:(UIBarButtonItem *)item {
//判断 提示用户
//if (//用户已添加编辑 ) {
//提示用户是否放弃
// }
[self dismissViewControllerAnimated:YES completion:nil];
}
//添加完成 保存
- (void)handleDone:(UIBarButtonItem *)item {
AddContactView *view = (AddContactView *)self.view;
NSString *name = view.nameTF.text;
NSString *number = view.phoneNumTF.text;
//判断
if (name.length == || number.length == ) {
return;
}
//创建联系人对象
Contact *contact = [[Contact alloc] init];
contact.name = name;
contact.phoneNum = number;
//添加联系人
[AddressBookHelper addContact:contact];
//返回
[self dismissViewControllerAnimated:YES completion:nil]; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

AddContactViewController文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h> @interface AddContactView : UIView
@property (nonatomic, retain) UITextField *nameTF;//姓名
@property (nonatomic, retain) UITextField *genderTF;//性别
@property (nonatomic, retain) UITextField *phoneNumTF;//电话号码 @property (nonatomic, retain) UIImageView *avaterView;//头像 @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "AddContactView.h"
#import "UIColor+Addition.h" @implementation AddContactView - (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor whiteColor];
[self setUpViews];
}
return self;
}
//布局子视图
- (void)setUpViews {
//头像
self.avaterView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )];
_avaterView.image = [UIImage imageNamed:@"green_avatarEmpty"];
_avaterView.userInteractionEnabled = YES;
_avaterView.layer.cornerRadius = ;
_avaterView.layer.masksToBounds = YES;
[self addSubview:_avaterView];
[_avaterView release]; //姓名
self.nameTF = [[UITextField alloc] initWithFrame:CGRectMake(, , , )];
_nameTF.backgroundColor = [UIColor lightGrayColor];
_nameTF.placeholder = @"姓名";
_nameTF.textColor = [UIColor lightGreenColor];
[self addSubview:_nameTF];
[_nameTF release]; //性别
self.genderTF = [[UITextField alloc] initWithFrame:CGRectMake(, , , )];
_genderTF.placeholder = @"性别";
_genderTF.backgroundColor = [UIColor lightGrayColor];
_genderTF.textColor = [UIColor lightGreenColor];
[self addSubview:_genderTF];
[_genderTF release]; //电话号码
self.phoneNumTF = [[UITextField alloc] initWithFrame:CGRectMake(, , self.frame.size.width - , )];
_phoneNumTF.backgroundColor = [UIColor lightGrayColor];
_phoneNumTF.placeholder = @"手机号";
_phoneNumTF.textColor = [UIColor lightGreenColor];
[self addSubview:_phoneNumTF];
[_phoneNumTF release]; } @end

AddContactView文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------

#import <UIKit/UIKit.h>

@interface ContactListViewController : UITableViewController

@end

#pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "ContactListViewController.h"
#import "AddressBookHelper.h"
#import "Contact.h"
#import "AddContactViewController.h"
#import "MainNavigationController.h"
#import "DetailViewController.h"
#import "CustomContactCell.h"
#import "UIColor+Addition.h"
@interface ContactListViewController () <MakeACallDelegate>
@property (nonatomic, retain) UIWebView *webView;
@end @implementation ContactListViewController //重新刷新数据
- (void)viewWillAppear:(BOOL)animated {
[self.tableView reloadData];//重新加载数据
} - (void)viewDidLoad {
[super viewDidLoad];
[self customizedNaviBar];//个性化配置该界面的导航条
self.tableView.rowHeight = ;//行高
self.tableView.sectionIndexColor = [UIColor lightGreenColor];//索引标题颜色
//注册cell
[self.tableView registerClass:[CustomContactCell class] forCellReuseIdentifier:@"reuse"];
}
- (void)customizedNaviBar {
self.navigationItem.title = @"HHH手机通讯录";
self.navigationItem.rightBarButtonItem = self.editButtonItem;
UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"add_contact"] style:UIBarButtonItemStylePlain target:self action:@selector(handleAdd:)];
self.navigationItem.leftBarButtonItem = left;
[left release]; } #pragma mark - handleAdd -
//模态进入添加联系人界面
- (void)handleAdd:(UIBarButtonItem *)left {
AddContactViewController *addVC = [[AddContactViewController alloc] init];
MainNavigationController *mainVC = [[MainNavigationController alloc] initWithRootViewController:addVC];
[self presentViewController:mainVC animated:YES completion:^{ }];
[addVC release];
[mainVC release]; } - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
if ([self isViewLoaded] && !self.view.window) {
self.view = nil;
}
} #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
//通过助手类 返回分区的个数
return [AddressBookHelper numberOfSection];
} - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
//通过助手类 返回分区的行数
return [AddressBookHelper numberOfRowsInSection:section];
} - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
CustomContactCell *cell = [tableView dequeueReusableCellWithIdentifier:@"reuse" forIndexPath:indexPath]; // Configure the cell...
Contact *contact = [AddressBookHelper contactAtIndexPath:indexPath];
//cell控件赋值
//第1种方式.
// [cell configureCell:contact];
//第2种方式. setter方法完成赋值操作
cell.contact = contact; //设置代理对象 完成拨打电话
cell.delegate = self;
cell.indexPath = indexPath;
return cell;
} - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
return [AddressBookHelper titleForHeaderInSection:section];
}
//右侧的索引标题
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
return [AddressBookHelper sectionIndexTitles];
} // Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
return YES;
} // Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
if ([AddressBookHelper isNeedToDeleteWholeSection:indexPath.section]) {
//数据
[AddressBookHelper deleteWholeSection:indexPath.section];
//UI界面
[tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationLeft];
} else {
//数据
[AddressBookHelper deleteRowAtIndexPath:indexPath];
//UI界面
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
} else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
} //移动操作
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
//调用助手类 完成对应的移动操作
[AddressBookHelper moveFromIndexPath:fromIndexPath ToIndexPath:toIndexPath];
} // Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the item to be re-orderable.
return YES;
}
//限制移动范围 禁止跨区移动
- (NSIndexPath *)tableView:(UITableView *)tableView targetIndexPathForMoveFromRowAtIndexPath:(NSIndexPath *)sourceIndexPath toProposedIndexPath:(NSIndexPath *)proposedDestinationIndexPath {
if (sourceIndexPath.section == proposedDestinationIndexPath.section) {
return proposedDestinationIndexPath;
}
return sourceIndexPath;
} #pragma mark - UITableViewDelegate -
//点击进入详情页面
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
//push进入联系人详情页
DetailViewController *detailVC = [[DetailViewController alloc] init];
//(属性)传值 把对应的联系人传递到详情页
Contact *contact = [AddressBookHelper contactAtIndexPath:indexPath];
//在push之前给属性赋值
detailVC.contact = contact; [self.navigationController pushViewController:detailVC animated:YES];
[detailVC release];
} #pragma mark - MakeACallDelegate -
//拨打电话
- (void)dial:(NSIndexPath *)indexPath {
NSLog(@"%@", indexPath);
Contact *contact = [AddressBookHelper contactAtIndexPath:indexPath];
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"tel:%@", contact.phoneNum]]]];
} //懒加载 何时使用 何时创建
- (UIWebView *)webView {
if (!_webView) {
self.webView = [[UIWebView alloc] init];
[self.view addSubview:_webView];
[_webView release];
}
return [[_webView retain] autorelease];
} @end

ContactListViewController文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> @interface Contact : NSObject
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *gender;
@property (nonatomic, copy) NSString *phoneNum;
@property (nonatomic, copy) NSString *photo; @property (nonatomic, retain) UIImage *photoView; - (instancetype)initWithDic:(NSDictionary *)dic; @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "Contact.h" @implementation Contact - (instancetype)initWithDic:(NSDictionary *)dic {
self = [super init];
if (self) {
[self setValuesForKeysWithDictionary:dic];
self.photoView = [UIImage imageNamed:dic[@"photo"]];
}
return self;
} - (void)setValue:(id)value forUndefinedKey:(NSString *)key {
NSLog(@"错误处理");
} - (void)dealloc {
self.name = nil;
self.gender = nil;
self.phoneNum = nil;
self.photo = nil;
[super dealloc];
} @end

Contact文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h>
@class Contact; //为callBtn制定协议方法 实现拨打电话
@protocol MakeACallDelegate <NSObject> - (void)dial:(NSIndexPath *)indexPath; @end @interface CustomContactCell : UITableViewCell
@property (nonatomic, retain) UIImageView *photoView;
@property (nonatomic, retain) UILabel *nameLabel;
@property (nonatomic, retain) UILabel *phoneLabel;
@property (nonatomic, retain) UIButton *callBtn; @property (nonatomic, retain) NSIndexPath *indexPath;//存储当前点击的cell的索引 @property (nonatomic, assign) id<MakeACallDelegate>delegate; //2.声明一个联系人对象的属性
@property (nonatomic, retain) Contact *contact; ////1.为cell上的控件赋值
//- (void)configureCell:(Contact *)contact; @end #pragma mark (.m文件)-------------------------------------------------------------------------------------------------------- #import "CustomContactCell.h"
#import "Contact.h" @implementation CustomContactCell - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
//布局子控件
[self.contentView addSubview:self.photoView];
[self.contentView addSubview:self.nameLabel];
[self.contentView addSubview:self.phoneLabel];
[self.contentView addSubview:self.callBtn];
}
return self;
} #pragma lazy loading 实现控件的创建
//重写getter方法
- (UIImageView *)photoView {
if (!_photoView) {
self.photoView = [[[UIImageView alloc] initWithFrame:CGRectMake(, , , )] autorelease];
_photoView.layer.cornerRadius = 5.0;
_photoView.layer.masksToBounds = YES;
}
return [[_photoView retain] autorelease];
}
- (UILabel *)nameLabel {
if (!_nameLabel) {
self.nameLabel = [[[UILabel alloc] initWithFrame:CGRectMake(, , , )] autorelease];
}
return [[_nameLabel retain] autorelease];
}
- (UILabel *)phoneLabel {
if (!_phoneLabel) {
self.phoneLabel = [[[UILabel alloc] initWithFrame:CGRectMake(, , self.frame.size.width/, )] autorelease];
_nameLabel.textAlignment = NSTextAlignmentLeft;
_phoneLabel.textColor = [UIColor lightGrayColor];
}
return [[_phoneLabel retain] autorelease];
} - (UIButton *)callBtn {
if (!_callBtn) {
self.callBtn = [UIButton buttonWithType:UIButtonTypeCustom];
_callBtn.frame = CGRectMake(self.frame.size.width - , , , );
[_callBtn setImage:[UIImage imageNamed:@"dita"] forState:UIControlStateNormal];
//添加触发方法
[_callBtn addTarget:self action:@selector(handleCall:) forControlEvents:UIControlEventTouchUpInside];
}
return [[_callBtn retain] autorelease];
} - (void)handleCall:(UIButton *)sender {
if (_delegate && [self.delegate respondsToSelector:@selector(dial:)]) {
[_delegate dial:self.indexPath];
}
}
////1.自定义方法 实现cell的控件赋值操作
//- (void)configureCell:(Contact *)contact {
// self.photoView.image = [UIImage imageNamed:contact.photo];
// self.nameLabel.text = contact.name;
// self.phoneLabel.text = contact.phoneNum;
//}
//2.重写setter方法 为cell的控件赋值
- (void)setContact:(Contact *)contact {
if (_contact != contact) {
[_contact release];
_contact = [contact retain];
}
self.photoView.image = contact.photoView;
self.nameLabel.text = contact.name;
self.phoneLabel.text = contact.phoneNum;
} - (void)dealloc {
self.nameLabel = nil;
self.photoView = nil;
self.phoneLabel = nil;
self.callBtn = nil;
self.indexPath = nil;
[super dealloc];
} @end

CustomContactCell文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h>
#import "Contact.h" @interface DetailViewController : UIViewController
@property (nonatomic, retain) Contact *contact;//接收上一界面的联系人对象 @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "DetailViewController.h"
#import "DetailView.h"
@interface DetailViewController () <UIActionSheetDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate> @end @implementation DetailViewController
//重写loadView 指定视图控制器的根视图
- (void)loadView {
DetailView *detail = [[DetailView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//给对应控件赋值
if (!self.contact.photo) {
detail.avaterView.image = [UIImage imageNamed:@"grassGreen_avatarEmpty"];
} else {
detail.avaterView.image = [UIImage imageNamed:self.contact.photo];
}
detail.nameTF.text = self.contact.name;
detail.genderTF.text = self.contact.gender;
detail.phoneNumTF.text = self.contact.phoneNum; self.view = detail;
[detail release];
}
//配置导航条属性
- (void)customizedNaviBar{
self.navigationItem.title = @"";
UIBarButtonItem *left = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"btn_navigationBar_back"] style:UIBarButtonItemStylePlain target:self action:@selector(handlePop:)];
self.navigationItem.leftBarButtonItem = left;
[left release]; self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
[self customizedNaviBar];
[self setNotEnabled];//设置进入后控件处于不可编辑状态
[self addTapGesture];//给头像添加轻拍手势 }
#pragma mark - handle Action -
//返回主页
- (void)handlePop:(UIBarButtonItem *)sender {
[self.navigationController popViewControllerAnimated:YES];
} - (void)setNotEnabled {
DetailView *detail = (DetailView *)self.view;
//关闭用户交互
detail.userInteractionEnabled = NO;
} //设置编辑状态
- (void)setEditing:(BOOL)editing animated:(BOOL)animated {
//editing Edit -- YES Done -- NO
[super setEditing:editing animated:animated];
//输入框进入编辑状态
self.view.userInteractionEnabled = editing;
//点击Done之后 更新内容
if (!editing) {
[self updateData];
}
} - (void)updateData {
DetailView *view = (DetailView *)self.view;
self.contact.name = view.nameTF.text;
self.contact.gender = view.genderTF.text;
self.contact.phoneNum = view.phoneNumTF.text;
self.contact.photoView = view.avaterView.image;
} - (void)addTapGesture {
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
[((DetailView *)self.view).avaterView addGestureRecognizer:tap];
[tap release];
}
//设置或修改头像
- (void)handleTap:(UITapGestureRecognizer *)tap {
//调用系统相机或图库
UIActionSheet *myActionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"从相册中选取", nil];
[myActionSheet showInView:self.view];
[myActionSheet release];
} - (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex{
//呼出的菜单按钮点击后的响应
if (buttonIndex == actionSheet.cancelButtonIndex)
{
NSLog(@"取消");
}else{
//相机可用时初始化 pikerController为UIImagePickerControllerSourceTypeCamera
UIImagePickerControllerSourceType sourceType = UIImagePickerControllerSourceTypeCamera;
switch (buttonIndex)
{
case : //打开照相机拍照
sourceType = UIImagePickerControllerSourceTypeCamera;
break; case : //打开本地相册
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
break;
}
if (![UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypeCamera])
{
//如果源类型 UIImagePickerControllerSourceTypeCamera 不可用时 设置UIImagePickerControllerSourceTypePhotoLibrary 为源类型
sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
UIImagePickerController *picker = [[UIImagePickerController alloc] init];//初始化
picker.delegate = self;
picker.allowsEditing = YES;//设置可编辑
picker.sourceType = sourceType;
[self presentViewController:picker animated:YES completion:nil];//进入照相界面或相册界面
[picker release];
}
} - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
((DetailView *)self.view).avaterView.image = [info objectForKey:UIImagePickerControllerEditedImage];//use编辑后的照片;
[self dismissViewControllerAnimated:YES completion:nil];
} - (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

DetailViewController文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------
#import <UIKit/UIKit.h> @interface DetailView : UIView @property (nonatomic, retain) UITextField *nameTF;//姓名
@property (nonatomic, retain) UITextField *genderTF;//性别
@property (nonatomic, retain) UITextField *phoneNumTF;//电话号码 @property (nonatomic, retain) UIImageView *avaterView;//头像 @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "DetailView.h"
#import "UIColor+Addition.h"
@implementation DetailView - (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor whiteColor];
[self setUpViews];
}
return self;
}
//布局子视图
- (void)setUpViews {
//头像
self.avaterView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )];
_avaterView.image = [UIImage imageNamed:@"green_avatarEmpty"];
_avaterView.userInteractionEnabled = YES;
_avaterView.layer.cornerRadius = ;
_avaterView.layer.masksToBounds = YES;
[self addSubview:_avaterView];
[_avaterView release]; //姓名
self.nameTF = [[UITextField alloc] initWithFrame:CGRectMake(, , , )];
_nameTF.backgroundColor = [UIColor lightGreenColor];
_nameTF.placeholder = @"姓名";
_nameTF.textColor = [UIColor whiteColor];
[self addSubview:_nameTF];
[_nameTF release]; //性别
self.genderTF = [[UITextField alloc] initWithFrame:CGRectMake(, , , )];
_genderTF.placeholder = @"性别";
_genderTF.backgroundColor = [UIColor lightGreenColor];
_genderTF.textColor = [UIColor whiteColor];
[self addSubview:_genderTF];
[_genderTF release]; //电话号码
self.phoneNumTF = [[UITextField alloc] initWithFrame:CGRectMake(, , self.frame.size.width - , )];
_phoneNumTF.backgroundColor = [UIColor lightGreenColor];
_phoneNumTF.placeholder = @"手机号";
_phoneNumTF.textColor = [UIColor whiteColor];
[self addSubview:_phoneNumTF];
[_phoneNumTF release]; } @end

DetailView文件

#pragma mark (.h文件)--------------------------------------------------------------------------------------------------------

#import <UIKit/UIKit.h>

@interface ChineseToPinyin : NSObject {

}

+ (NSString *) pinyinFromChiniseString:(NSString *)string;
+ (char) sortSectionTitle:(NSString *)string; @end #pragma mark (.m文件)--------------------------------------------------------------------------------------------------------
#import "ChineseToPinyin.h" NSString *FindLetter(int nCode) {
NSString *strValue = @"";
switch(nCode) {
case :
case :
case :
case :
strValue = @"A";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"AI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"AN";
break;
strValue = @"ANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"AO";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"BA";
break;
case :
case :
case :
strValue = @"BAI";
break;
case :
case :
case :
case :
case :
case :
strValue = @"BAN";
break;
case :
case :
strValue = @"BANG";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"BAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"BEI";
break;
case :
case :
case :
case :
strValue = @"BEN";
break;
case :
case :
strValue = @"BENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"BI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"BIAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"BIAO";
break;
case :
strValue = @"BIE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"BIN";
break;
case :
case :
case :
strValue = @"BING";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"BO";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"BU";
break;
case :
case :
strValue = @"CA";
break;
strValue = @"CAI";
break;
case :
case :
case :
case :
case :
strValue = @"CAN";
break;
case :
strValue = @"CANG";
break;
case :
case :
case :
case :
strValue = @"CAO";
break;
case :
strValue = @"CE";
break;
case :
case :
strValue = @"CEN";
break;
case :
strValue = @"CENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHA";
break;
case :
case :
case :
case :
strValue = @"CHAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHANG";
break;
case :
case :
case :
strValue = @"CHAO";
break;
case :
case :
strValue = @"CHE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHEN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHI";
break;
case :
case :
case :
case :
case :
strValue = @"CHONG";
break;
case :
case :
case :
case :
case :
strValue = @"CHOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CHU";
break;
case :
case :
case :
case :
strValue = @"CHUAI";
break;
case :
case :
case :
case :
case :
strValue = @"CHUAN";
break;
case :
strValue = @"CHUANG";
break;
case :
case :
case :
strValue = @"CHUI";
break;
case :
case :
case :
strValue = @"CHUN";
break;
case :
case :
case :
strValue = @"CHUO";
break;
strValue = @"CI";
break;
case :
case :
case :
case :
case :
strValue = @"4337 À≈";
break;
case :
case :
case :
case :
case :
case :
strValue = @"CONG";
break;
case :
case :
case :
strValue = @"COU";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"CU";
break;
case :
case :
case :
case :
strValue = @"CUAN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"CUI";
break;
case :
case :
strValue = @"CUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"CUO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DA";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"DAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DAN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"DANG";
break;
case :
case :
case :
case :
strValue = @"DAO";
break;
case :
strValue = @"DE";
break;
case :
case :
case :
case :
case :
case :
strValue = @"DENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DI";
break;
case :
strValue = @"DIA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DIAN";
break;
case :
case :
case :
strValue = @"DIAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DIE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DING";
break;
case :
strValue = @"DIU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DONG";
break;
case :
case :
case :
case :
strValue = @"DOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"DU";
break;
case :
case :
case :
strValue = @"DUAN";
break;
case :
case :
case :
strValue = @"DUI";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"DUN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"DUO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"E";
break;
case :
case :
strValue = @"EN";
break;
case :
case :
case :
case :
case :
case :
strValue = @"ER";
break;
case :
case :
strValue = @"FA";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"FAN";
break;
case :
case :
case :
case :
case :
strValue = @"FANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"FEI";
break;
case :
case :
case :
case :
case :
strValue = @"FEN";
break;
case :
case :
case :
case :
case :
case :
strValue = @"FENG";
break;
strValue = @"FO";
break;
case :
strValue = @"FOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"FU";
break;
case :
case :
case :
case :
case :
strValue = @" GA";
break;
case :
case :
case :
case :
case :
strValue = @"GAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GAN";
break;
case :
case :
case :
strValue = @"GANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GE";
break;
strValue = @"GEI";
break;
case :
case :
case :
case :
strValue = @"GEN";
break;
case :
case :
case :
case :
strValue = @"GENG";
break;
case :
case :
case :
case :
strValue = @"GONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GU";
break;
case :
case :
case :
case :
case :
case :
strValue = @"GUA";
break;
strValue = @"GUAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GUAN";
break;
case :
case :
case :
case :
strValue = @"GUANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GUI";
break;
case :
case :
case :
case :
strValue = @"GUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"GUO";
break;
case :
strValue = @"HA";
break;
case :
case :
case :
strValue = @"HAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HAN";
break;
case :
case :
case :
strValue = @"HANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HE";
break;
strValue = @"HEI";
break;
strValue = @"HEN";
break;
case :
case :
case :
strValue = @"HENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HU";
break;
case :
case :
case :
case :
strValue = @"HUA";
break;
case :
strValue = @"HUAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HUAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HUANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HUI";
break;
case :
case :
case :
case :
strValue = @"HUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"HUO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIANG";
break;
case :
case :
strValue = @"JIONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JIU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JUAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"JUE";
break;
case :
case :
case :
case :
strValue = @"JUN";
break;
case :
case :
case :
strValue = @"KA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"KAI";
break;
case :
case :
case :
case :
case :
strValue = @"KAN";
break;
case :
case :
case :
strValue = @"KANG";
break;
case :
case :
case :
case :
strValue = @"KAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"KE";
break;
case :
strValue = @"KEN";
break;
case :
strValue = @"KENG";
break;
case :
case :
case :
strValue = @"KONG";
break;
case :
case :
case :
case :
case :
strValue = @"KOU";
break;
case :
case :
case :
case :
case :
strValue = @"KU";
break;
case :
strValue = @"KUA";
break;
case :
case :
case :
case :
case :
strValue = @"KUAI";
break;
case :
strValue = @"KUAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"KUANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"KUI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LIAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LIE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LIN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LING";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LIU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LOU";
break;
case :
case :
case :
case :
case :
case :
strValue = @"L®π";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LU";
break;
case :
case :
case :
case :
case :
strValue = @"LUAN";
break;
strValue = @"L®µE";
break;
strValue = @"LUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"LUO";
break;
case :
strValue = @"M";
break;
case :
case :
case :
case :
case :
strValue = @"MA";
break;
case :
case :
case :
strValue = @"MAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MAN";
break;
case :
case :
case :
case :
strValue = @"MANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MEI";
break;
case :
case :
case :
case :
strValue = @"MEN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MI";
break;
case :
case :
case :
case :
case :
strValue = @"MIAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MIAO";
break;
case :
case :
case :
case :
strValue = @"MIE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MIN";
break;
case :
case :
case :
case :
case :
case :
strValue = @"MING";
break;
strValue = @"MIU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"MO";
break;
case :
case :
case :
case :
case :
case :
strValue = @"MOU";
break;
case :
case :
case :
case :
case :
case :
strValue = @"MU";
break;
case :
strValue = @"N";
break;
case :
case :
case :
case :
strValue = @"NA";
break;
case :
case :
case :
case :
strValue = @"NAI";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"NAN";
break;
case :
case :
case :
case :
strValue = @"NANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"NAO";
break;
case :
strValue = @"NE";
break;
strValue = @"NEI";
break;
case :
strValue = @"NEN";
break;
strValue = @"NENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"NI";
break;
case :
case :
case :
case :
case :
case :
strValue = @"NIAN";
break;
strValue = @"NIANG";
break;
case :
case :
case :
case :
strValue = @"NIAO";
break;
case :
case :
case :
case :
case :
case :
strValue = @"NIE";
break;
strValue = @"NIN";
break;
case :
case :
case :
case :
strValue = @"NING";
break;
case :
case :
case :
strValue = @"NIU";
break;
case :
case :
strValue = @"NONG";
break;
case :
strValue = @"NOU";
break;
case :
case :
case :
case :
strValue = @"NU";
break;
case :
case :
case :
strValue = @"N®µ";
break;
strValue = @"NUAN";
break;
strValue = @"NUE";
break;
case :
case :
case :
case :
strValue = @"NUO";
break;
case :
case :
strValue = @"O";
break;
case :
case :
case :
case :
strValue = @"OU";
break;
case :
case :
case :
strValue = @"PA";
break;
case :
case :
case :
strValue = @"PAI";
break;
case :
case :
case :
case :
case :
case :
strValue = @"PAN";
break;
case :
case :
case :
case :
strValue = @"PANG";
break;
case :
case :
case :
case :
case :
strValue = @"PAO";
break;
case :
case :
case :
case :
case :
case :
strValue = @"PEI";
break;
case :
strValue = @"PEN";
break;
case :
case :
case :
case :
strValue = @"PENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"PI";
break;
case :
case :
case :
case :
case :
case :
strValue = @"PIAN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"PIAO";
break;
case :
case :
strValue = @"PIE";
break;
case :
case :
case :
case :
case :
case :
strValue = @"PIN";
break;
case :
case :
case :
case :
strValue = @"PING";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"PO";
break;
case :
case :
strValue = @"POU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"PU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QI";
break;
case :
case :
strValue = @"QIA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QIAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QIANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QIAO";
break;
case :
case :
case :
case :
case :
case :
strValue = @"QIE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QIN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QING";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"QIONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QIU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"QUAN";
break;
case :
case :
case :
strValue = @"QUE";
break;
case :
strValue = @"QUN";
break;
case :
case :
case :
strValue = @"RAN";
break;
case :
case :
strValue = @"RANG";
break;
case :
case :
case :
strValue = @"RAO";
break;
strValue = @"RE";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"REN";
break;
strValue = @"RENG";
break;
strValue = @"RI";
break;
case :
case :
case :
case :
case :
strValue = @"RONG";
break;
case :
case :
case :
strValue = @"ROU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"RU";
break;
case :
strValue = @"RUAN";
break;
case :
case :
case :
case :
case :
strValue = @"RUI";
break;
strValue = @"RUN";
break;
case :
case :
strValue = @"RUO";
break;
case :
case :
case :
case :
case :
strValue = @"SA";
break;
case :
strValue = @"SAI";
break;
case :
case :
case :
strValue = @"SAN";
break;
case :
case :
case :
strValue = @"SANG";
break;
case :
case :
case :
case :
case :
case :
strValue = @"SAO";
break;
strValue = @"SE";
break;
strValue = @"SEN";
break;
strValue = @"SENG";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"SHA";
break;
case :
strValue = @"SHAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SHAN";
break;
case :
case :
case :
case :
case :
strValue = @"SHANG";
break;
case :
case :
case :
case :
case :
case :
strValue = @"SHAO";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"SHE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SHEN";
break;
case :
case :
case :
case :
strValue = @"SHENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SHI";
break;
case :
case :
case :
strValue = @"SHOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SHU";
break;
case :
strValue = @"SHUA";
break;
case :
strValue = @"SHUAI";
break;
case :
case :
strValue = @"SHUAN";
break;
case :
strValue = @"SHUANG";
break;
strValue = @"SHUI";
break;
strValue = @"SHUN";
break;
case :
case :
case :
case :
case :
strValue = @"SHUO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"SU";
break;
case :
strValue = @"SUAN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"SUI";
break;
case :
case :
case :
case :
case :
strValue = @"SUN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"SUO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"TA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"TAI";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"TAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"TANG";
break;
case :
case :
case :
case :
case :
strValue = @"TAO";
break;
strValue = @"1845 ≤Õ";
break;
case :
case :
case :
strValue = @"TE";
break;
case :
strValue = @"TENG";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"TI";
break;
case :
case :
case :
case :
case :
strValue = @"TIAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"TIAO";
break;
case :
case :
strValue = @"TIE";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"TING";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"TONG";
break;
case :
case :
case :
strValue = @"TOU";
break;
case :
case :
case :
case :
case :
strValue = @"TU";
break;
case :
case :
strValue = @"TUAN";
break;
case :
strValue = @"TUI";
break;
case :
case :
case :
case :
strValue = @"TUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"TUO";
break;
case :
case :
case :
strValue = @"WA";
break;
strValue = @"WAI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"WAN";
break;
case :
case :
case :
case :
case :
strValue = @"WANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"WEI";
break;
case :
case :
case :
case :
case :
strValue = @"WEN";
break;
case :
case :
strValue = @"WENG";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"WO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"WU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XIA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XIAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XIANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XIAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XIE";
break;
case :
case :
case :
case :
case :
strValue = @"XIN";
break;
case :
case :
case :
case :
case :
strValue = @"XING";
break;
case :
strValue = @"XIONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XIU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XUAN";
break;
case :
case :
case :
case :
strValue = @"XUE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"XUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YA";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YAN";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"YANG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YAO";
break;
case :
case :
case :
case :
case :
case :
case :
strValue = @"YE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YI";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YIN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YING";
break;
case :
strValue = @"YO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YUAN";
break;
case :
case :
case :
case :
case :
strValue = @"YUE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"YUN";
break;
case :
case :
strValue = @"ZA";
break;
case :
case :
strValue = @"ZAI";
break;
case :
case :
case :
case :
case :
case :
strValue = @"ZAN";
break;
case :
case :
case :
strValue = @"ZANG";
break;
case :
strValue = @"ZAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZE";
break;
strValue = @"ZEI";
break;
case :
strValue = @"ZEN";
break;
case :
case :
case :
case :
strValue = @"ZENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHA";
break;
case :
case :
strValue = @"ZHAI";
break;
case :
case :
case :
strValue = @"ZHAN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHANG";
break;
case :
case :
case :
case :
strValue = @"ZHAO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHE";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHEN";
break;
case :
case :
case :
case :
case :
case :
strValue = @"ZHENG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHI";
break;
case :
case :
case :
case :
case :
strValue = @"ZHONG";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHOU";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHU";
break;
strValue = @"ZHUA";
break;
strValue = @"ZHUAI";
break;
case :
case :
case :
strValue = @"ZHUAN";
break;
case :
strValue = @"ZHUANG";
break;
case :
case :
case :
strValue = @"ZHUI";
break;
case :
case :
strValue = @"ZHUN";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZHUO";
break;
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
case :
strValue = @"ZI";
break;
case :
case :
case :
strValue = @"ZONG";
break;
case :
case :
case :
case :
case :
strValue = @"ZOU";
break;
case :
case :
case :
strValue = @"ZU";
break;
case :
case :
case :
strValue = @"ZUAN";
break;
case :
strValue = @"ZUI";
break;
case :
case :
case :
strValue = @"ZUN";
break;
case :
case :
case :
case :
case :
case :
strValue = @"ZUO";
break;
default:
if(nCode >= && nCode <= )
{
strValue = @"A";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"AI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"AN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"AO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BENG";
break;
}
if(nCode> && nCode <= )
{
strValue = @"BI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"BU";
break;
}
if(nCode==)
{
strValue = @"CA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHU";
break;
}
if(nCode==)
{
strValue = @"CHUAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHUANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CHUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"CUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DING";
break;
}
if(nCode==)
{
strValue = @"DIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"DUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"E";
break;
}
if(nCode==)
{
strValue = @"EN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ER";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FENG";
break;
}
if(nCode==)
{
strValue = @"FO";
break;
}
if(nCode==)
{
strValue = @"FOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"FU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GE";
break;
}
if(nCode==)
{
strValue = @"GEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"GUO";
break;
}
if(nCode==)
{
strValue = @"HA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"HUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JUE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"JUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"KUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LI";
}
if(nCode==)
{
strValue = @"LIA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LIANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LUE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"LUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MAO";
break;
}
if(nCode==)
{
strValue = @"ME";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MI";
}
if(nCode >= && nCode <= )
{
strValue = @"MIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MING";
break;
}
if(nCode==)
{
strValue = @"MIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"MU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NAN";
break;
}
if(nCode==)
{
strValue = @"NANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NAO";
break;
}
if(nCode==)
{
strValue = @"NE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NEI";
break;
}
if(nCode==)
{
strValue = @"NEN";
break;
}
if(nCode==)
{
strValue = @"NENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NIANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NIE";
break;
}
if(nCode==)
{
strValue = @"NIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NU";
break;
}
if(nCode==)
{
strValue = @"NUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NUE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"NUO";
break;
}
if(nCode==)
{
strValue = @"O";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"OU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PO";
break;
}
if(nCode==)
{
strValue = @"POU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"PU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QI";
break;
}
if(nCode==||(nCode >= && nCode <= ))
{
strValue = @"QIA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QUE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"QUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RANG";
}
if(nCode >= && nCode <= )
{
strValue = @"RAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"REN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RENG";
break;
}
if(nCode==)
{
strValue = @"RI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ROU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"RUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SE";
break;
}
if(nCode==)
{
strValue = @"SEN";
}
if(nCode==)
{
strValue = @"SENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SHUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"SUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TAO";
break;
}
if(nCode==)
{
strValue = @"TE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"TUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WEI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"WU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XING";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XIU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XUE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"XUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YIN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YING";
break;
}
if(nCode==)
{
strValue = @"YO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YUE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"YUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZE";
break;
}
if(nCode==)
{
strValue = @"ZEI";
break;
}
if(nCode==)
{
strValue = @"ZEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHA";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHAO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHE";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHEN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHENG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHUA";
break;
}
if(nCode==)
{
strValue = @"ZHUAI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHUANG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZHUO";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZONG";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZOU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZU";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZUAN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZUI";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZUN";
break;
}
if(nCode >= && nCode <= )
{
strValue = @"ZUO";
break;
}
}
return strValue;
} #define HANZI_START 19968
#define HANZI_COUNT 20902 static char firstLetterArray[HANZI_COUNT] =
"ydkqsxnwzssxjbymgcczqpssqbycdscdqldylybssjgyqzjjfgcclzznwdwzjljpfyynnjjtmynzwzhflzppqhgccyynmjqyxxgd"
"nnsnsjnjnsnnmlnrxyfsngnnnnqzggllyjlnyzssecykyyhqwjssggyxyqyjtwktjhychmnxjtlhjyqbyxdldwrrjnwysrldzjpc"
"bzjjbrcfslnczstzfxxchtrqggddlyccssymmrjcyqzpwwjjyfcrwfdfzqpyddwyxkyjawjffxjbcftzyhhycyswccyxsclcxxwz"
"cxnbgnnxbxlzsqsbsjpysazdhmdzbqbscwdzzyytzhbtsyyfzgntnxjywqnknphhlxgybfmjnbjhhgqtjcysxstkzglyckglysmz"
"xyalmeldccxgzyrjxjzlnjzcqkcnnjwhjczccqljststbnhbtyxceqxkkwjyflzqlyhjxspsfxlmpbysxxxytccnylllsjxfhjxp"
"jbtffyabyxbcczbzyclwlczggbtssmdtjcxpthyqtgjjxcjfzkjzjqnlzwlslhdzbwjncjzyzsqnycqynzcjjwybrtwpyftwexcs"
"kdzctbyhyzqyyjxzcfbzzmjyxxsdczottbzljwfckscsxfyrlrygmbdthjxsqjccsbxyytswfbjdztnbcnzlcyzzpsacyzzsqqcs"
"hzqydxlbpjllmqxqydzxsqjtzpxlcglqdcwzfhctdjjsfxjejjtlbgxsxjmyjjqpfzasyjnsydjxkjcdjsznbartcclnjqmwnqnc"
"lllkbdbzzsyhqcltwlccrshllzntylnewyzyxczxxgdkdmtcedejtsyyssdqdfmxdbjlkrwnqlybglxnlgtgxbqjdznyjsjyjcjm"
"rnymgrcjczgjmzmgxmmryxkjnymsgmzzymknfxmbdtgfbhcjhkylpfmdxlxjjsmsqgzsjlqdldgjycalcmzcsdjllnxdjffffjcn" //
"fnnffpfkhkgdpqxktacjdhhzdddrrcfqyjkqccwjdxhwjlyllzgcfcqjsmlzpbjjblsbcjggdckkdezsqcckjgcgkdjtjllzycxk"
"lqccgjcltfpcqczgwbjdqyzjjbyjhsjddwgfsjgzkcjctllfspkjgqjhzzljplgjgjjthjjyjzccmlzlyqbgjwmljkxzdznjqsyz"
"mljlljkywxmkjlhskjhbmclyymkxjqlbmllkmdxxkwyxwslmlpsjqqjqxyqfjtjdxmxxllcrqbsyjbgwynnggbcnxpjtgpapfgdj"
"qbhbncfjyzjkjkhxqfgqckfhygkhdkllsdjqxpqyaybnqsxqnszswhbsxwhxwbzzxdmndjbsbkbbzklylxgwxjjwaqzmywsjqlsj"
"xxjqwjeqxnchetlzalyyyszzpnkyzcptlshtzcfycyxyljsdcjqagyslcllyyysslqqqnldxzsccscadycjysfsgbfrsszqsbxjp"
"sjysdrckgjlgtkzjzbdktcsyqpyhstcldjnhmymcgxyzhjdctmhltxzhylamoxyjcltyfbqqjpfbdfehthsqhzywwcncxcdwhowg"
"yjlegmdqcwgfjhcsntmydolbygnqwesqpwnmlrydzszzlyqpzgcwxhnxpyxshmdqjgztdppbfbhzhhjyfdzwkgkzbldnzsxhqeeg"
"zxylzmmzyjzgszxkhkhtxexxgylyapsthxdwhzydpxagkydxbhnhnkdnjnmyhylpmgecslnzhkxxlbzzlbmlsfbhhgsgyyggbhsc"
"yajtxglxtzmcwzydqdqmngdnllszhngjzwfyhqswscelqajynytlsxthaznkzzsdhlaxxtwwcjhqqtddwzbcchyqzflxpslzqgpz"
"sznglydqtbdlxntctajdkywnsyzljhhdzckryyzywmhychhhxhjkzwsxhdnxlyscqydpslyzwmypnkxyjlkchtyhaxqsyshxasmc"
"hkdscrsgjpwqsgzjlwwschsjhsqnhnsngndantbaalczmsstdqjcjktscjnxplggxhhgoxzcxpdmmhldgtybynjmxhmrzplxjzck"
"zxshflqxxcdhxwzpckczcdytcjyxqhlxdhypjqxnlsyydzozjnhhqezysjyayxkypdgxddnsppyzndhthrhxydpcjjhtcnnctlhb"
"ynyhmhzllnnxmylllmdcppxhmxdkycyrdltxjchhznxclcclylnzsxnjzzlnnnnwhyqsnjhxynttdkyjpychhyegkcwtwlgjrlgg"
"tgtygyhpyhylqyqgcwyqkpyyettttlhyylltyttsylnyzwgywgpydqqzzdqnnkcqnmjjzzbxtqfjkdffbtkhzkbxdjjkdjjtlbwf"
"zpptkqtztgpdwntpjyfalqmkgxbcclzfhzcllllanpnxtjklcclgyhdzfgyddgcyyfgydxkssendhykdndknnaxxhbpbyyhxccga"
"pfqyjjdmlxcsjzllpcnbsxgjyndybwjspcwjlzkzddtacsbkzdyzypjzqsjnkktknjdjgyepgtlnyqnacdntcyhblgdzhbbydmjr"
"egkzyheyybjmcdtafzjzhgcjnlghldwxjjkytcyksssmtwcttqzlpbszdtwcxgzagyktywxlnlcpbclloqmmzsslcmbjcsdzkydc"
"zjgqjdsmcytzqqlnzqzxssbpkdfqmddzzsddtdmfhtdycnaqjqkypbdjyyxtljhdrqxlmhkydhrnlklytwhllrllrcxylbnsrnzz"
"symqzzhhkyhxksmzsyzgcxfbnbsqlfzxxnnxkxwymsddyqnggqmmyhcdzttfgyyhgsbttybykjdnkyjbelhdypjqnfxfdnkzhqks"
"byjtzbxhfdsbdaswpawajldyjsfhblcnndnqjtjnchxfjsrfwhzfmdrfjyxwzpdjkzyjympcyznynxfbytfyfwygdbnzzzdnytxz"
"emmqbsqehxfznbmflzzsrsyqjgsxwzjsprytjsjgskjjgljjynzjjxhgjkymlpyyycxycgqzswhwlyrjlpxslcxmnsmwklcdnkny"
"npsjszhdzeptxmwywxyysywlxjqcqxzdclaeelmcpjpclwbxsqhfwrtfnjtnqjhjqdxhwlbyccfjlylkyynldxnhycstyywncjtx"
"ywtrmdrqnwqcmfjdxzmhmayxnwmyzqtxtlmrspwwjhanbxtgzypxyyrrclmpamgkqjszycymyjsnxtplnbappypylxmyzkynldgy"
"jzcchnlmzhhanqnbgwqtzmxxmllhgdzxnhxhrxycjmffxywcfsbssqlhnndycannmtcjcypnxnytycnnymnmsxndlylysljnlxys"
"sqmllyzlzjjjkyzzcsfbzxxmstbjgnxnchlsnmcjscyznfzlxbrnnnylmnrtgzqysatswryhyjzmgdhzgzdwybsscskxsyhytsxg"
"cqgxzzbhyxjscrhmkkbsczjyjymkqhzjfnbhmqhysnjnzybknqmcjgqhwlsnzswxkhljhyybqcbfcdsxdldspfzfskjjzwzxsddx"
"jseeegjscssygclxxnwwyllymwwwgydkzjggggggsycknjwnjpcxbjjtqtjwdsspjxcxnzxnmelptfsxtllxcljxjjljsxctnswx"
"lennlyqrwhsycsqnybyaywjejqfwqcqqcjqgxaldbzzyjgkgxbltqyfxjltpydkyqhpmatlcndnkxmtxynhklefxdllegqtymsaw"
"hzmljtkynxlyjzljeeyybqqffnlyxhdsctgjhxywlkllxqkcctnhjlqmkkzgcyygllljdcgydhzwypysjbzjdzgyzzhywyfqdtyz"
"szyezklymgjjhtsmqwyzljyywzcsrkqyqltdxwcdrjalwsqzwbdcqyncjnnszjlncdcdtlzzzacqqzzddxyblxcbqjylzllljddz"
"jgyqyjzyxnyyyexjxksdaznyrdlzyyynjlslldyxjcykywnqcclddnyyynycgczhjxcclgzqjgnwnncqqjysbzzxyjxjnxjfzbsb"
"dsfnsfpzxhdwztdmpptflzzbzdmyypqjrsdzsqzsqxbdgcpzswdwcsqzgmdhzxmwwfybpngphdmjthzsmmbgzmbzjcfzhfcbbnmq"
"dfmbcmcjxlgpnjbbxgyhyyjgptzgzmqbqdcgybjxlwnkydpdymgcftpfxyztzxdzxtgkptybbclbjaskytssqyymscxfjhhlslls"
"jpqjjqaklyldlycctsxmcwfgngbqxllllnyxtyltyxytdpjhnhgnkbyqnfjyyzbyyessessgdyhfhwtcqbsdzjtfdmxhcnjzymqw"
"srxjdzjqbdqbbsdjgnfbknbxdkqhmkwjjjgdllthzhhyyyyhhsxztyyyccbdbpypzyccztjpzywcbdlfwzcwjdxxhyhlhwczxjtc"
"nlcdpxnqczczlyxjjcjbhfxwpywxzpcdzzbdccjwjhmlxbqxxbylrddgjrrctttgqdczwmxfytmmzcwjwxyywzzkybzcccttqnhx"
"nwxxkhkfhtswoccjybcmpzzykbnnzpbthhjdlszddytyfjpxyngfxbyqxzbhxcpxxtnzdnnycnxsxlhkmzxlthdhkghxxsshqyhh"
"cjyxglhzxcxnhekdtgqxqypkdhentykcnymyyjmkqyyyjxzlthhqtbyqhxbmyhsqckwwyllhcyylnneqxqwmcfbdccmljggxdqkt"
"lxkknqcdgcjwyjjlyhhqyttnwchhxcxwherzjydjccdbqcdgdnyxzdhcqrxcbhztqcbxwgqwyybxhmbymykdyecmqkyaqyngyzsl"
"fnkkqgyssqyshngjctxkzycssbkyxhyylstycxqthysmnscpmmgcccccmnztasmgqzjhklosjylswtmqzyqkdzljqqyplzycztcq"
"qpbbcjzclpkhqcyyxxdtdddsjcxffllchqxmjlwcjcxtspycxndtjshjwhdqqqckxyamylsjhmlalygxcyydmamdqmlmcznnyybz"
"xkyflmcncmlhxrcjjhsylnmtjggzgywjxsrxcwjgjqhqzdqjdcjjskjkgdzcgjjyjylxzxxcdqhhheslmhlfsbdjsyyshfyssczq"
"lpbdrfnztzdkykhsccgkwtqzckmsynbcrxqbjyfaxpzzedzcjykbcjwhyjbqzzywnyszptdkzpfpbaztklqnhbbzptpptyzzybhn"
"ydcpzmmcycqmcjfzzdcmnlfpbplngqjtbttajzpzbbdnjkljqylnbzqhksjznggqstzkcxchpzsnbcgzkddzqanzgjkdrtlzldwj"
"njzlywtxndjzjhxnatncbgtzcsskmljpjytsnwxcfjwjjtkhtzplbhsnjssyjbhbjyzlstlsbjhdnwqpslmmfbjdwajyzccjtbnn"
"nzwxxcdslqgdsdpdzgjtqqpsqlyyjzlgyhsdlctcbjtktyczjtqkbsjlgnnzdncsgpynjzjjyyknhrpwszxmtncszzyshbyhyzax"
"ywkcjtllckjjtjhgcssxyqyczbynnlwqcglzgjgqyqcczssbcrbcskydznxjsqgxssjmecnstjtpbdlthzwxqwqczexnqczgwesg"
"ssbybstscslccgbfsdqnzlccglllzghzcthcnmjgyzazcmsksstzmmzckbjygqljyjppldxrkzyxccsnhshhdznlzhzjjcddcbcj"
"xlbfqbczztpqdnnxljcthqzjgylklszzpcjdscqjhjqkdxgpbajynnsmjtzdxlcjyryynhjbngzjkmjxltbsllrzpylssznxjhll"
"hyllqqzqlsymrcncxsljmlzltzldwdjjllnzggqxppskyggggbfzbdkmwggcxmcgdxjmcjsdycabxjdlnbcddygskydqdxdjjyxh"
"saqazdzfslqxxjnqzylblxxwxqqzbjzlfbblylwdsljhxjyzjwtdjcyfqzqzzdzsxzzqlzcdzfxhwspynpqzmlpplffxjjnzzyls"
"jnyqzfpfzgsywjjjhrdjzzxtxxglghtdxcskyswmmtcwybazbjkshfhgcxmhfqhyxxyzftsjyzbxyxpzlchmzmbxhzzssyfdmncw"
"dabazlxktcshhxkxjjzjsthygxsxyyhhhjwxkzxssbzzwhhhcwtzzzpjxsyxqqjgzyzawllcwxznxgyxyhfmkhydwsqmnjnaycys"
"pmjkgwcqhylajgmzxhmmcnzhbhxclxdjpltxyjkdyylttxfqzhyxxsjbjnayrsmxyplckdnyhlxrlnllstycyyqygzhhsccsmcct"
"zcxhyqfpyyrpbflfqnntszlljmhwtcjqyzwtlnmlmdwmbzzsnzrbpdddlqjjbxtcsnzqqygwcsxfwzlxccrszdzmcyggdyqsgtnn"
"nlsmymmsyhfbjdgyxccpshxczcsbsjyygjmpbwaffyfnxhydxzylremzgzzyndsznlljcsqfnxxkptxzgxjjgbmyyssnbtylbnlh"
"bfzdcyfbmgqrrmzszxysjtznnydzzcdgnjafjbdknzblczszpsgcycjszlmnrznbzzldlnllysxsqzqlcxzlsgkbrxbrbzcycxzj"
"zeeyfgklzlnyhgzcgzlfjhgtgwkraajyzkzqtsshjjxdzyznynnzyrzdqqhgjzxsszbtkjbbfrtjxllfqwjgclqtymblpzdxtzag"
"bdhzzrbgjhwnjtjxlkscfsmwlldcysjtxkzscfwjlbnntzlljzllqblcqmqqcgcdfpbphzczjlpyyghdtgwdxfczqyyyqysrclqz"
"fklzzzgffcqnwglhjycjjczlqzzyjbjzzbpdcsnnjgxdqnknlznnnnpsntsdyfwwdjzjysxyyczcyhzwbbyhxrylybhkjksfxtjj"
"mmchhlltnyymsxxyzpdjjycsycwmdjjkqyrhllngpngtlyycljnnnxjyzfnmlrgjjtyzbsyzmsjyjhgfzqmsyxrszcytlrtqzsst"
"kxgqkgsptgxdnjsgcqcqhmxggztqydjjznlbznxqlhyqgggthqscbyhjhhkyygkggcmjdzllcclxqsftgjslllmlcskctbljszsz"
"mmnytpzsxqhjcnnqnyexzqzcpshkzzyzxxdfgmwqrllqxrfztlystctmjcsjjthjnxtnrztzfqrhcgllgcnnnnjdnlnnytsjtlny"
"xsszxcgjzyqpylfhdjsbbdczgjjjqzjqdybssllcmyttmqnbhjqmnygjyeqyqmzgcjkpdcnmyzgqllslnclmholzgdylfzslncnz"
"lylzcjeshnyllnxnjxlyjyyyxnbcljsswcqqnnyllzldjnllzllbnylnqchxyyqoxccqkyjxxxyklksxeyqhcqkkkkcsnyxxyqxy"
"gwtjohthxpxxhsnlcykychzzcbwqbbwjqcscszsslcylgddsjzmmymcytsdsxxscjpqqsqylyfzychdjynywcbtjsydchcyddjlb"
"djjsodzyqyskkyxdhhgqjyohdyxwgmmmazdybbbppbcmnnpnjzsmtxerxjmhqdntpjdcbsnmssythjtslmltrcplzszmlqdsdmjm"
"qpnqdxcfrnnfsdqqyxhyaykqyddlqyyysszbydslntfgtzqbzmchdhczcwfdxtmqqsphqwwxsrgjcwnntzcqmgwqjrjhtqjbbgwz"
"fxjhnqfxxqywyyhyccdydhhqmrmtmwctbszppzzglmzfollcfwhmmsjzttdhlmyffytzzgzyskjjxqyjzqbhmbzclyghgfmshpcf"
"zsnclpbqsnjyzslxxfpmtyjygbxlldlxpzjyzjyhhzcywhjylsjexfszzywxkzjlnadymlymqjpwxxhxsktqjezrpxxzghmhwqpw"
"qlyjjqjjzszcnhjlchhnxjlqwzjhbmzyxbdhhypylhlhlgfwlcfyytlhjjcwmscpxstkpnhjxsntyxxtestjctlsslstdlllwwyh"
"dnrjzsfgxssyczykwhtdhwjglhtzdqdjzxxqgghltzphcsqfclnjtclzpfstpdynylgmjllycqhynspchylhqyqtmzymbywrfqyk"
"jsyslzdnjmpxyyssrhzjnyqtqdfzbwwdwwrxcwggyhxmkmyyyhmxmzhnksepmlqqmtcwctmxmxjpjjhfxyyzsjzhtybmstsyjznq"
"jnytlhynbyqclcycnzwsmylknjxlggnnpjgtysylymzskttwlgsmzsylmpwlcwxwqcssyzsyxyrhssntsrwpccpwcmhdhhxzdzyf"
"jhgzttsbjhgyglzysmyclllxbtyxhbbzjkssdmalhhycfygmqypjyjqxjllljgclzgqlycjcctotyxmtmshllwlqfxymzmklpszz"
"cxhkjyclctyjcyhxsgyxnnxlzwpyjpxhjwpjpwxqqxlxsdhmrslzzydwdtcxknstzshbsccstplwsscjchjlcgchssphylhfhhxj"
"sxallnylmzdhzxylsxlmzykcldyahlcmddyspjtqjzlngjfsjshctsdszlblmssmnyymjqbjhrzwtyydchjljapzwbgqxbkfnbjd"
"llllyylsjydwhxpsbcmljpscgbhxlqhyrljxyswxhhzlldfhlnnymjljyflyjycdrjlfsyzfsllcqyqfgqyhnszlylmdtdjcnhbz"
"llnwlqxygyyhbmgdhxxnhlzzjzxczzzcyqzfngwpylcpkpykpmclgkdgxzgxwqbdxzzkzfbddlzxjtpjpttbythzzdwslcpnhslt"
"jxxqlhyxxxywzyswttzkhlxzxzpyhgzhknfsyhntjrnxfjcpjztwhplshfcrhnslxxjxxyhzqdxqwnnhyhmjdbflkhcxcwhjfyjc"
"fpqcxqxzyyyjygrpynscsnnnnchkzdyhflxxhjjbyzwttxnncyjjymswyxqrmhxzwfqsylznggbhyxnnbwttcsybhxxwxyhhxyxn"
"knyxmlywrnnqlxbbcljsylfsytjzyhyzawlhorjmnsczjxxxyxchcyqryxqzddsjfslyltsffyxlmtyjmnnyyyxltzcsxqclhzxl"
"wyxzhnnlrxkxjcdyhlbrlmbrdlaxksnlljlyxxlynrylcjtgncmtlzllcyzlpzpzyawnjjfybdyyzsepckzzqdqpbpsjpdyttbdb"
"bbyndycncpjmtmlrmfmmrwyfbsjgygsmdqqqztxmkqwgxllpjgzbqrdjjjfpkjkcxbljmswldtsjxldlppbxcwkcqqbfqbccajzg"
"mykbhyhhzykndqzybpjnspxthlfpnsygyjdbgxnhhjhzjhstrstldxskzysybmxjlxyslbzyslzxjhfybqnbylljqkygzmcyzzym"
"ccslnlhzhwfwyxzmwyxtynxjhbyymcysbmhysmydyshnyzchmjjmzcaahcbjbbhblytylsxsnxgjdhkxxtxxnbhnmlngsltxmrhn"
"lxqqxmzllyswqgdlbjhdcgjyqyymhwfmjybbbyjyjwjmdpwhxqldyapdfxxbcgjspckrssyzjmslbzzjfljjjlgxzgyxyxlszqkx"
"bexyxhgcxbpndyhwectwwcjmbtxchxyqqllxflyxlljlssnwdbzcmyjclwswdczpchqekcqbwlcgydblqppqzqfnqdjhymmcxtxd"
"rmzwrhxcjzylqxdyynhyyhrslnrsywwjjymtltllgtqcjzyabtckzcjyccqlysqxalmzynywlwdnzxqdllqshgpjfjljnjabcqzd"
"jgthhsstnyjfbswzlxjxrhgldlzrlzqzgsllllzlymxxgdzhgbdphzpbrlwnjqbpfdwonnnhlypcnjccndmbcpbzzncyqxldomzb"
"lzwpdwyygdstthcsqsccrsssyslfybnntyjszdfndpdhtqzmbqlxlcmyffgtjjqwftmnpjwdnlbzcmmcngbdzlqlpnfhyymjylsd"
"chdcjwjcctljcldtljjcbddpndsszycndbjlggjzxsxnlycybjjxxcbylzcfzppgkcxqdzfztjjfjdjxzbnzyjqctyjwhdyczhym"
"djxttmpxsplzcdwslshxypzgtfmlcjtacbbmgdewycyzxdszjyhflystygwhkjyylsjcxgywjcbllcsnddbtzbsclyzczzssqdll"
"mjyyhfllqllxfdyhabxggnywyypllsdldllbjcyxjznlhljdxyyqytdlllbngpfdfbbqbzzmdpjhgclgmjjpgaehhbwcqxajhhhz"
"chxyphjaxhlphjpgpzjqcqzgjjzzgzdmqyybzzphyhybwhazyjhykfgdpfqsdlzmljxjpgalxzdaglmdgxmmzqwtxdxxpfdmmssy"
"mpfmdmmkxksyzyshdzkjsysmmzzzmdydyzzczxbmlstmdyemxckjmztyymzmzzmsshhdccjewxxkljsthwlsqlyjzllsjssdppmh"
"nlgjczyhmxxhgncjmdhxtkgrmxfwmckmwkdcksxqmmmszzydkmsclcmpcjmhrpxqpzdsslcxkyxtwlkjyahzjgzjwcjnxyhmmbml"
"gjxmhlmlgmxctkzmjlyscjsyszhsyjzjcdajzhbsdqjzgwtkqxfkdmsdjlfmnhkzqkjfeypzyszcdpynffmzqykttdzzefmzlbnp"
"plplpbpszalltnlkckqzkgenjlwalkxydpxnhsxqnwqnkxqclhyxxmlnccwlymqyckynnlcjnszkpyzkcqzqljbdmdjhlasqlbyd"
"wqlwdgbqcryddztjybkbwszdxdtnpjdtcnqnfxqqmgnseclstbhpwslctxxlpwydzklnqgzcqapllkqcylbqmqczqcnjslqzdjxl"
"ddhpzqdljjxzqdjyzhhzlkcjqdwjppypqakjyrmpzbnmcxkllzllfqpylllmbsglzysslrsysqtmxyxzqzbscnysyztffmzzsmzq"
"hzssccmlyxwtpzgxzjgzgsjzgkddhtqggzllbjdzlsbzhyxyzhzfywxytymsdnzzyjgtcmtnxqyxjscxhslnndlrytzlryylxqht"
"xsrtzcgyxbnqqzfhykmzjbzymkbpnlyzpblmcnqyzzzsjztjctzhhyzzjrdyzhnfxklfzslkgjtctssyllgzrzbbjzzklpkbczys"
"nnyxbjfbnjzzxcdwlzyjxzzdjjgggrsnjkmsmzjlsjywqsnyhqjsxpjztnlsnshrnynjtwchglbnrjlzxwjqxqkysjycztlqzybb"
"ybyzjqdwgyzcytjcjxckcwdkkzxsnkdnywwyyjqyytlytdjlxwkcjnklccpzcqqdzzqlcsfqchqqgssmjzzllbjjzysjhtsjdysj"
"qjpdszcdchjkjzzlpycgmzndjxbsjzzsyzyhgxcpbjydssxdzncglqmbtsfcbfdzdlznfgfjgfsmpnjqlnblgqcyyxbqgdjjqsrf"
"kztjdhczklbsdzcfytplljgjhtxzcsszzxstjygkgckgynqxjplzbbbgcgyjzgczqszlbjlsjfzgkqqjcgycjbzqtldxrjnbsxxp"
"zshszycfwdsjjhxmfczpfzhqhqmqnknlyhtycgfrzgnqxcgpdlbzcsczqlljblhbdcypscppdymzzxgyhckcpzjgslzlnscnsldl"
"xbmsdlddfjmkdqdhslzxlsznpqpgjdlybdskgqlbzlnlkyyhzttmcjnqtzzfszqktlljtyyllnllqyzqlbdzlslyyzxmdfszsnxl"
"xznczqnbbwskrfbcylctnblgjpmczzlstlxshtzcyzlzbnfmqnlxflcjlyljqcbclzjgnsstbrmhxzhjzclxfnbgxgtqncztmsfz"
"kjmssncljkbhszjntnlzdntlmmjxgzjyjczxyhyhwrwwqnztnfjscpyshzjfyrdjsfscjzbjfzqzchzlxfxsbzqlzsgyftzdcszx"
"zjbjpszkjrhxjzcgbjkhcggtxkjqglxbxfgtrtylxqxhdtsjxhjzjjcmzlcqsbtxwqgxtxxhxftsdkfjhzyjfjxnzldlllcqsqqz"
"qwqxswqtwgwbzcgcllqzbclmqjtzgzyzxljfrmyzflxnsnxxjkxrmjdzdmmyxbsqbhgzmwfwygmjlzbyytgzyccdjyzxsngnyjyz"
"nbgpzjcqsyxsxrtfyzgrhztxszzthcbfclsyxzlzqmzlmplmxzjssfsbysmzqhxxnxrxhqzzzsslyflczjrcrxhhzxqndshxsjjh"
"qcjjbcynsysxjbqjpxzqplmlxzkyxlxcnlcycxxzzlxdlllmjyhzxhyjwkjrwyhcpsgnrzlfzwfzznsxgxflzsxzzzbfcsyjdbrj"
"krdhhjxjljjtgxjxxstjtjxlyxqfcsgswmsbctlqzzwlzzkxjmltmjyhsddbxgzhdlbmyjfrzfcgclyjbpmlysmsxlszjqqhjzfx"
"gfqfqbphngyyqxgztnqwyltlgwgwwhnlfmfgzjmgmgbgtjflyzzgzyzaflsspmlbflcwbjztljjmzlpjjlymqtmyyyfbgygqzgly"
"zdxqyxrqqqhsxyyqxygjtyxfsfsllgnqcygycwfhcccfxpylypllzqxxxxxqqhhsshjzcftsczjxspzwhhhhhapylqnlpqafyhxd"
"ylnkmzqgggddesrenzltzgchyppcsqjjhclljtolnjpzljlhymhezdydsqycddhgznndzclzywllznteydgnlhslpjjbdgwxpcnn"
"tycklkclwkllcasstknzdnnjttlyyzssysszzryljqkcgdhhyrxrzydgrgcwcgzqffbppjfzynakrgywyjpqxxfkjtszzxswzddf"
"bbqtbgtzkznpzfpzxzpjszbmqhkyyxyldkljnypkyghgdzjxxeaxpnznctzcmxcxmmjxnkszqnmnlwbwwqjjyhclstmcsxnjcxxt"
"pcnfdtnnpglllzcjlspblpgjcdtnjjlyarscffjfqwdpgzdwmrzzcgodaxnssnyzrestyjwjyjdbcfxnmwttbqlwstszgybljpxg"
"lbnclgpcbjftmxzljylzxcltpnclcgxtfzjshcrxsfysgdkntlbyjcyjllstgqcbxnhzxbxklylhzlqzlnzcqwgzlgzjncjgcmnz"
"zgjdzxtzjxycyycxxjyyxjjxsssjstsstdppghtcsxwzdcsynptfbchfbblzjclzzdbxgcjlhpxnfzflsyltnwbmnjhszbmdnbcy"
"sccldnycndqlyjjhmqllcsgljjsyfpyyccyltjantjjpwycmmgqyysxdxqmzhszxbftwwzqswqrfkjlzjqqyfbrxjhhfwjgzyqac"
"myfrhcyybynwlpexcczsyyrlttdmqlrkmpbgmyyjprkznbbsqyxbhyzdjdnghpmfsgbwfzmfqmmbzmzdcgjlnnnxyqgmlrygqccy"
"xzlwdkcjcggmcjjfyzzjhycfrrcmtznzxhkqgdjxccjeascrjthpljlrzdjrbcqhjdnrhylyqjsymhzydwcdfryhbbydtssccwbx"
"glpzmlzjdqsscfjmmxjcxjytycghycjwynsxlfemwjnmkllswtxhyyyncmmcyjdqdjzglljwjnkhpzggflccsczmcbltbhbqjxqd"
"jpdjztghglfjawbzyzjltstdhjhctcbchflqmpwdshyytqwcnntjtlnnmnndyyyxsqkxwyyflxxnzwcxypmaelyhgjwzzjbrxxaq"
"jfllpfhhhytzzxsgqjmhspgdzqwbwpjhzjdyjcqwxkthxsqlzyymysdzgnqckknjlwpnsyscsyzlnmhqsyljxbcxtlhzqzpcycyk"
"pppnsxfyzjjrcemhszmnxlxglrwgcstlrsxbygbzgnxcnlnjlclynymdxwtzpalcxpqjcjwtcyyjlblxbzlqmyljbghdslssdmxm"
"bdczsxyhamlczcpjmcnhjyjnsykchskqmczqdllkablwjqsfmocdxjrrlyqchjmybyqlrhetfjzfrfksryxfjdwtsxxywsqjysly"
"xwjhsdlxyyxhbhawhwjcxlmyljcsqlkydttxbzslfdxgxsjkhsxxybssxdpwncmrptqzczenygcxqfjxkjbdmljzmqqxnoxslyxx"
"lylljdzptymhbfsttqqwlhsgynlzzalzxclhtwrrqhlstmypyxjjxmnsjnnbryxyjllyqyltwylqyfmlkljdnlltfzwkzhljmlhl"
"jnljnnlqxylmbhhlnlzxqchxcfxxlhyhjjgbyzzkbxscqdjqdsndzsygzhhmgsxcsymxfepcqwwrbpyyjqryqcyjhqqzyhmwffhg"
"zfrjfcdbxntqyzpcyhhjlfrzgpbxzdbbgrqstlgdgylcqmgchhmfywlzyxkjlypjhsywmqqggzmnzjnsqxlqsyjtcbehsxfszfxz"
"wfllbcyyjdytdthwzsfjmqqyjlmqsxlldttkghybfpwdyysqqrnqwlgwdebzwcyygcnlkjxtmxmyjsxhybrwfymwfrxyymxysctz"
"ztfykmldhqdlgyjnlcryjtlpsxxxywlsbrrjwxhqybhtydnhhxmmywytycnnmnssccdalwztcpqpyjllqzyjswjwzzmmglmxclmx"
"nzmxmzsqtzppjqblpgxjzhfljjhycjsrxwcxsncdlxsyjdcqzxslqyclzxlzzxmxqrjmhrhzjbhmfljlmlclqnldxzlllfyprgjy"
"nxcqqdcmqjzzxhnpnxzmemmsxykynlxsxtljxyhwdcwdzhqyybgybcyscfgfsjnzdrzzxqxrzrqjjymcanhrjtldbpyzbstjhxxz"
"ypbdwfgzzrpymnnkxcqbyxnbnfyckrjjcmjegrzgyclnnzdnkknsjkcljspgyyclqqjybzssqlllkjftbgtylcccdblsppfylgyd"
"tzjqjzgkntsfcxbdkdxxhybbfytyhbclnnytgdhryrnjsbtcsnyjqhklllzslydxxwbcjqsbxnpjzjzjdzfbxxbrmladhcsnclbj"
"dstblprznswsbxbcllxxlzdnzsjpynyxxyftnnfbhjjjgbygjpmmmmsszljmtlyzjxswxtyledqpjmpgqzjgdjlqjwjqllsdgjgy"
"gmscljjxdtygjqjjjcjzcjgdzdshqgzjggcjhqxsnjlzzbxhsgzxcxyljxyxyydfqqjhjfxdhctxjyrxysqtjxyefyyssyxjxncy"
"zxfxcsxszxyyschshxzzzgzzzgfjdldylnpzgsjaztyqzpbxcbdztzczyxxyhhscjshcggqhjhgxhsctmzmehyxgebtclzkkwytj"
"zrslekestdbcyhqqsayxcjxwwgsphjszsdncsjkqcxswxfctynydpccczjqtcwjqjzzzqzljzhlsbhpydxpsxshhezdxfptjqyzc"
"xhyaxncfzyyhxgnqmywntzsjbnhhgymxmxqcnssbcqsjyxxtyyhybcqlmmszmjzzllcogxzaajzyhjmchhcxzsxsdznleyjjzjbh"
"zwjzsqtzpsxzzdsqjjjlnyazphhyysrnqzthzhnyjyjhdzxzlswclybzyecwcycrylchzhzydzydyjdfrjjhtrsqtxyxjrjhojyn"
"xelxsfsfjzghpzsxzszdzcqzbyyklsgsjhczshdgqgxyzgxchxzjwyqwgyhksseqzzndzfkwyssdclzstsymcdhjxxyweyxczayd"
"mpxmdsxybsqmjmzjmtjqlpjyqzcgqhyjhhhqxhlhdldjqcfdwbsxfzzyyschtytyjbhecxhjkgqfxbhyzjfxhwhbdzfyzbchpnpg"
"dydmsxhkhhmamlnbyjtmpxejmcthqbzyfcgtyhwphftgzzezsbzegpbmdskftycmhbllhgpzjxzjgzjyxzsbbqsczzlzscstpgxm"
"jsfdcczjzdjxsybzlfcjsazfgszlwbczzzbyztzynswyjgxzbdsynxlgzbzfygczxbzhzftpbgzgejbstgkdmfhyzzjhzllzzgjq"
"zlsfdjsscbzgpdlfzfzszyzyzsygcxsnxxchczxtzzljfzgqsqqxcjqccccdjcdszzyqjccgxztdlgscxzsyjjqtcclqdqztqchq"
"qyzynzzzpbkhdjfcjfztypqyqttynlmbdktjcpqzjdzfpjsbnjlgyjdxjdcqkzgqkxclbzjtcjdqbxdjjjstcxnxbxqmslyjcxnt"
"jqwwcjjnjjlllhjcwqtbzqqczczpzzdzyddcyzdzccjgtjfzdprntctjdcxtqzdtjnplzbcllctdsxkjzqdmzlbznbtjdcxfczdb"
"czjjltqqpldckztbbzjcqdcjwynllzlzccdwllxwzlxrxntqjczxkjlsgdnqtddglnlajjtnnynkqlldzntdnycygjwyxdxfrsqs"
"tcdenqmrrqzhhqhdldazfkapbggpzrebzzykyqspeqjjglkqzzzjlysyhyzwfqznlzzlzhwcgkypqgnpgblplrrjyxcccgyhsfzf"
"wbzywtgzxyljczwhncjzplfflgskhyjdeyxhlpllllcygxdrzelrhgklzzyhzlyqszzjzqljzflnbhgwlczcfjwspyxzlzlxgccp"
"zbllcxbbbbnbbcbbcrnnzccnrbbnnldcgqyyqxygmqzwnzytyjhyfwtehznjywlccntzyjjcdedpwdztstnjhtymbjnyjzlxtsst"
"phndjxxbyxqtzqddtjtdyztgwscszqflshlnzbcjbhdlyzjyckwtydylbnydsdsycctyszyyebgexhqddwnygyclxtdcystqnygz"
"ascsszzdzlcclzrqxyywljsbymxshzdembbllyyllytdqyshymrqnkfkbfxnnsbychxbwjyhtqbpbsbwdzylkgzskyghqzjxhxjx"
"gnljkzlyycdxlfwfghljgjybxblybxqpqgntzplncybxdjyqydymrbeyjyyhkxxstmxrczzjwxyhybmcflyzhqyzfwxdbxbcwzms"
"lpdmyckfmzklzcyqycclhxfzlydqzpzygyjyzmdxtzfnnyttqtzhgsfcdmlccytzxjcytjmkslpzhysnwllytpzctzccktxdhxxt"
"qcyfksmqccyyazhtjplylzlyjbjxtfnyljyynrxcylmmnxjsmybcsysslzylljjgyldzdlqhfzzblfndsqkczfyhhgqmjdsxyctt"
"xnqnjpyybfcjtyyfbnxejdgyqbjrcnfyyqpghyjsyzngrhtknlnndzntsmgklbygbpyszbydjzsstjztsxzbhbscsbzczptqfzlq"
"flypybbjgszmnxdjmtsyskkbjtxhjcegbsmjyjzcstmljyxrczqscxxqpyzhmkyxxxjcljyrmyygadyskqlnadhrskqxzxztcggz"
"dlmlwxybwsyctbhjhcfcwzsxwwtgzlxqshnyczjxemplsrcgltnzntlzjcyjgdtclglbllqpjmzpapxyzlaktkdwczzbncctdqqz"
"qyjgmcdxltgcszlmlhbglkznnwzndxnhlnmkydlgxdtwcfrjerctzhydxykxhwfzcqshknmqqhzhhymjdjskhxzjzbzzxympajnm"
"ctbxlsxlzynwrtsqgscbptbsgzwyhtlkssswhzzlyytnxjgmjrnsnnnnlskztxgxlsammlbwldqhylakqcqctmycfjbslxclzjcl"
"xxknbnnzlhjphqplsxsckslnhpsfqcytxjjzljldtzjjzdlydjntptnndskjfsljhylzqqzlbthydgdjfdbyadxdzhzjnthqbykn"
"xjjqczmlljzkspldsclbblnnlelxjlbjycxjxgcnlcqplzlznjtsljgyzdzpltqcssfdmnycxgbtjdcznbgbqyqjwgkfhtnbyqzq"
"gbkpbbyzmtjdytblsqmbsxtbnpdxklemyycjynzdtldykzzxtdxhqshygmzsjycctayrzlpwltlkxslzcggexclfxlkjrtlqjaqz"
"ncmbqdkkcxglczjzxjhptdjjmzqykqsecqzdshhadmlzfmmzbgntjnnlhbyjbrbtmlbyjdzxlcjlpldlpcqdhlhzlycblcxccjad"
"qlmzmmsshmybhbnkkbhrsxxjmxmdznnpklbbrhgghfchgmnklltsyyycqlcskymyehywxnxqywbawykqldnntndkhqcgdqktgpkx"
"hcpdhtwnmssyhbwcrwxhjmkmzngwtmlkfghkjyldyycxwhyyclqhkqhtdqkhffldxqwytyydesbpkyrzpjfyyzjceqdzzdlattpb"
"fjllcxdlmjsdxegwgsjqxcfbssszpdyzcxznyxppzydlyjccpltxlnxyzyrscyyytylwwndsahjsygyhgywwaxtjzdaxysrltdps"
"syxfnejdxyzhlxlllzhzsjnyqyqyxyjghzgjcyjchzlycdshhsgczyjscllnxzjjyyxnfsmwfpyllyllabmddhwzxjmcxztzpmlq"
"chsfwzynctlndywlslxhymmylmbwwkyxyaddxylldjpybpwnxjmmmllhafdllaflbnhhbqqjqzjcqjjdjtffkmmmpythygdrjrdd"
"wrqjxnbysrmzdbyytbjhpymyjtjxaahggdqtmystqxkbtzbkjlxrbyqqhxmjjbdjntgtbxpgbktlgqxjjjcdhxqdwjlwrfmjgwqh"
"cnrxswgbtgygbwhswdwrfhwytjjxxxjyzyslphyypyyxhydqpxshxyxgskqhywbdddpplcjlhqeewjgsyykdpplfjthkjltcyjhh"
"jttpltzzcdlyhqkcjqysteeyhkyzyxxyysddjkllpymqyhqgxqhzrhbxpllnqydqhxsxxwgdqbshyllpjjjthyjkyphthyyktyez"
"yenmdshlzrpqfbnfxzbsftlgxsjbswyysksflxlpplbbblnsfbfyzbsjssylpbbffffsscjdstjsxtryjcyffsyzyzbjtlctsbsd"
"hrtjjbytcxyyeylycbnebjdsysyhgsjzbxbytfzwgenhhhthjhhxfwgcstbgxklstyymtmbyxjskzscdyjrcythxzfhmymcxlzns"
"djtxtxrycfyjsbsdyerxhljxbbdeynjghxgckgscymblxjmsznskgxfbnbbthfjyafxwxfbxmyfhdttcxzzpxrsywzdlybbktyqw"
"qjbzypzjznjpzjlztfysbttslmptzrtdxqsjehbnylndxljsqmlhtxtjecxalzzspktlzkqqyfsyjywpcpqfhjhytqxzkrsgtksq"
"czlptxcdyyzsslzslxlzmacpcqbzyxhbsxlzdltztjtylzjyytbzypltxjsjxhlbmytxcqrblzssfjzztnjytxmyjhlhpblcyxqj"
"qqkzzscpzkswalqsplczzjsxgwwwygyatjbbctdkhqhkgtgpbkqyslbxbbckbmllndzstbklggqkqlzbkktfxrmdkbftpzfrtppm"
"ferqnxgjpzsstlbztpszqzsjdhljqlzbpmsmmsxlqqnhknblrddnhxdkddjcyyljfqgzlgsygmjqjkhbpmxyxlytqwlwjcpbmjxc"
"yzydrjbhtdjyeqshtmgsfyplwhlzffnynnhxqhpltbqpfbjwjdbygpnxtbfzjgnnntjshxeawtzylltyqbwjpgxghnnkndjtmszs"
"qynzggnwqtfhclssgmnnnnynzqqxncjdqgzdlfnykljcjllzlmzznnnnsshthxjlzjbbhqjwwycrdhlyqqjbeyfsjhthnrnwjhwp"
"slmssgzttygrqqwrnlalhmjtqjsmxqbjjzjqzyzkxbjqxbjxshzssfglxmxnxfghkzszggslcnnarjxhnlllmzxelglxydjytlfb"
"kbpnlyzfbbhptgjkwetzhkjjxzxxglljlstgshjjyqlqzfkcgnndjsszfdbctwwseqfhqjbsaqtgypjlbxbmmywxgslzhglsgnyf"
"ljbyfdjfngsfmbyzhqffwjsyfyjjphzbyyzffwotjnlmftwlbzgyzqxcdjygzyyryzynyzwegazyhjjlzrthlrmgrjxzclnnnljj"
"yhtbwjybxxbxjjtjteekhwslnnlbsfazpqqbdlqjjtyyqlyzkdksqjnejzldqcgjqnnjsncmrfqthtejmfctyhypymhydmjncfgy"
"yxwshctxrljgjzhzcyyyjltkttntmjlzclzzayyoczlrlbszywjytsjyhbyshfjlykjxxtmzyyltxxypslqyjzyzyypnhmymdyyl"
"blhlsyygqllnjjymsoycbzgdlyxylcqyxtszegxhzglhwbljheyxtwqmakbpqcgyshhegqcmwyywljyjhyyzlljjylhzyhmgsljl"
"jxcjjyclycjbcpzjzjmmwlcjlnqljjjlxyjmlszljqlycmmgcfmmfpqqmfxlqmcffqmmmmhnznfhhjgtthxkhslnchhyqzxtmmqd"
"cydyxyqmyqylddcyaytazdcymdydlzfffmmycqcwzzmabtbyctdmndzggdftypcgqyttssffwbdttqssystwnjhjytsxxylbyyhh"
"whxgzxwznnqzjzjjqjccchykxbzszcnjtllcqxynjnckycynccqnxyewyczdcjycchyjlbtzyycqwlpgpyllgktltlgkgqbgychj"
"xy"; char pinyinFirstLetter(unsigned short hanzi) {
int index = hanzi - HANZI_START;
if (index >= && index <= HANZI_COUNT) {
return firstLetterArray[index];
} else {
return '#';
}
} @implementation ChineseToPinyin + (NSString *) pinyinFromChiniseString:(NSString *)string {
if(!string || ![string length]) return nil; NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding( kCFStringEncodingGB_18030_2000);
NSData *gb2312_data = [string dataUsingEncoding:enc]; unsigned char ucHigh, ucLow;
int nCode;
NSString *strValue = @"";
int iLen = [gb2312_data length];
char *gb2312_string = (char *)[gb2312_data bytes];
for (int i = ; i < iLen; i++) {
if ((unsigned char)gb2312_string[i] < 0x80 ) {
strValue = [strValue stringByAppendingFormat:@"%c", gb2312_string[i] > ? gb2312_string[i] - : gb2312_string[i]];
continue;
} ucHigh = (unsigned char)gb2312_string[i];
ucLow = (unsigned char)gb2312_string[i + ];
if ( ucHigh < 0xa1 || ucLow < 0xa1)
continue;
else
nCode = (ucHigh - 0xa0) * + ucLow - 0xa0; NSString *strRes = FindLetter(nCode);
strValue = [strValue stringByAppendingString:strRes];
i++;
}
return [[NSString alloc] initWithString:strValue]
;
} + (char) sortSectionTitle:(NSString *)string {
int cLetter = ;
if( !string || == [string length] )
cLetter = '#';
else {
if(([string characterAtIndex:] > && [string characterAtIndex:] < ) ||
([string characterAtIndex:] > && [string characterAtIndex:] < ) ) {
cLetter = [string characterAtIndex:];
} else
cLetter = pinyinFirstLetter((unsigned short)[string characterAtIndex:]); if(cLetter > )
cLetter -= ;
}
return cLetter;
} @end

ChineseToPinyin文件

其他:

MVC 要根据实际的情况去分模块,做到代码精简,逻辑清晰

修改info里面的Bundle display name 为一个 App设置软件名字

拼音的接口类(封装的类)的使用方法很简单   [ChineseToPinyin pinyinFromChiniseString:self]

UI:通讯录实现的更多相关文章

  1. Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节.交流QQ群:[编程之美 365234583]h ...

  2. Android UI(四)云通讯录项目之云端更新进度条实现

    作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节.交流QQ群:[编程之美 365234583]h ...

  3. UI:用UITableView制作通讯录的关键代码

    分析{功能分析(打电话.添加联系人.修改联系人),模块分析(联系人展示.详情模块.添加模块)} 拿到一个项目,首先分析项目框架(工程框架) 首先:判断是否是用户第一次安装:(如果是的,那就加载用户引导 ...

  4. iOS开发UI篇—实现一个私人通讯录小应用【转】

    转一篇学习segue不错的教程 一.该部分主要完成内容 1.界面搭建                        2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2). ...

  5. android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果

    相信大家都体验过android通讯录中的弹窗效果.如图所示: android中提供了QuickContactBadge来实现这一效果.这里简单演示下. 首先创建布局文件: <?xml versi ...

  6. 实战项目:通讯录&nbsp;UI—第十一天

     1.推出视图的两种方式:  1.通过导航控制器push到下一个界面,使用pop返回到上一个界面 2.通过模态的形式推出视图,不需要依赖于导航控制器,通过使用present到下一个界面,通过dismi ...

  7. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  8. iOS之UI组件整理

    作者:神兽gcc 授权本站转载. 最近把iOS里的UI组件重新整理了一遍,简单来看一下常用的组件以及它们的实现.其实现在这些组件都可以通过Storyboard很快的生成,只是要向这些组件能够变得生动起 ...

  9. UI第十八节——UITableView

    在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,基本大部分应用都有UITableView.当然它的广泛使用自然离不开它强大的功能,今天就针对U ...

随机推荐

  1. 【HDOJ6319】Ascending Rating(单调队列)

    题意: 思路: 倒着来是因为这样可以维护每一个当过最大值的数,而正着不行 #include<cstdio> #include<cstring> #include<stri ...

  2. msp430项目编程14

    msp430中项目---电子测重系统 1.hx711工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习

  3. linux 安装报错:pkg-config not found

    linux 安装报错:pkg-config not found 使用编译安装时,在执行./configure时报如下错误: ... ... checking for pkg-config... no ...

  4. 一个APP的由来

    之前在站酷.UI中国.优设等网站看过不少的APP教程.规范等一些东西.自认为有些规范讲的内容过于繁琐,对于像我这样的大多数设计师来说看着看着就懵逼了....          

  5. 各种ORM框架对比(理论篇,欢迎来观摩,并且纠正部分错误,防止误区)

    各种ORM框架对比 目前框架有以下 PetaPoco Dapper.NET Massive Simple.Data Chain PetaPoco 轻量级,以前单文件,目前有维护形成项目级别,适合多个数 ...

  6. java native interface JNI 调用Java方法

    在上一篇文章中介绍了JNI.以及java调用JNI.这篇讲一下 JNI调用java方法. 通过使用合适的JNI函数,你能够创建Java对象,get.set 静态(static)和 实例(instanc ...

  7. Spring4.0MVC学习资料,注解自己主动扫描bean,自己主动注入bean(二)

    Spring4.0的新特性我们在上一章已经介绍过了. 包含它对jdk8的支持,Groovy Bean Definition DSL的支持.核心容器功能的改进,Web开发改进.測试框架改进等等.这张我们 ...

  8. 百万级PHP网站Poppen.de的架构分享心得

    在了解过世界最大的PHP站点,Facebook的后台技术后, 今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flick ...

  9. 高效5步走,高速搭建Hadoop2伪分布环境

    前两天将Hadoop2的全然分布式搭建文档整理公布于网上(http://blog.csdn.net/aaronhadoop/article/details/24859369).朋友相邀.就再将Hado ...

  10. MJRefresh实现刷新(使用它的Block方法)

    MJRefresh实现刷新(使用它的Block方法)   // // YFMVCPostListViewController.m // iOS122 // // Created by 颜风 on 15 ...