UI:通讯录实现
通讯录实现草图:
代码:
#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:通讯录实现的更多相关文章
- Android UI(五)云通讯录项目之联系人列表,带侧滑选择,带搜索框
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节.交流QQ群:[编程之美 365234583]h ...
- Android UI(四)云通讯录项目之云端更新进度条实现
作者:泥沙砖瓦浆木匠网站:http://blog.csdn.net/jeffli1993个人签名:打算起手不凡写出鸿篇巨作的人,往往坚持不了完成第一章节.交流QQ群:[编程之美 365234583]h ...
- UI:用UITableView制作通讯录的关键代码
分析{功能分析(打电话.添加联系人.修改联系人),模块分析(联系人展示.详情模块.添加模块)} 拿到一个项目,首先分析项目框架(工程框架) 首先:判断是否是用户第一次安装:(如果是的,那就加载用户引导 ...
- iOS开发UI篇—实现一个私人通讯录小应用【转】
转一篇学习segue不错的教程 一.该部分主要完成内容 1.界面搭建 2.功能说明 (1).只有当账号和密码输入框都有值的时候,登录按钮才能交互 (2). ...
- android UI进阶之弹窗的使用(2)--实现通讯录的弹窗效果
相信大家都体验过android通讯录中的弹窗效果.如图所示: android中提供了QuickContactBadge来实现这一效果.这里简单演示下. 首先创建布局文件: <?xml versi ...
- 实战项目:通讯录 UI—第十一天
1.推出视图的两种方式: 1.通过导航控制器push到下一个界面,使用pop返回到上一个界面 2.通过模态的形式推出视图,不需要依赖于导航控制器,通过使用present到下一个界面,通过dismi ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- iOS之UI组件整理
作者:神兽gcc 授权本站转载. 最近把iOS里的UI组件重新整理了一遍,简单来看一下常用的组件以及它们的实现.其实现在这些组件都可以通过Storyboard很快的生成,只是要向这些组件能够变得生动起 ...
- UI第十八节——UITableView
在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,基本大部分应用都有UITableView.当然它的广泛使用自然离不开它强大的功能,今天就针对U ...
随机推荐
- 【HDOJ6319】Ascending Rating(单调队列)
题意: 思路: 倒着来是因为这样可以维护每一个当过最大值的数,而正着不行 #include<cstdio> #include<cstring> #include<stri ...
- msp430项目编程14
msp430中项目---电子测重系统 1.hx711工作原理 2.电路原理说明 3.代码(显示部分) 4.代码(功能实现) 5.项目总结 msp430项目编程 msp430入门学习
- linux 安装报错:pkg-config not found
linux 安装报错:pkg-config not found 使用编译安装时,在执行./configure时报如下错误: ... ... checking for pkg-config... no ...
- 一个APP的由来
之前在站酷.UI中国.优设等网站看过不少的APP教程.规范等一些东西.自认为有些规范讲的内容过于繁琐,对于像我这样的大多数设计师来说看着看着就懵逼了....
- 各种ORM框架对比(理论篇,欢迎来观摩,并且纠正部分错误,防止误区)
各种ORM框架对比 目前框架有以下 PetaPoco Dapper.NET Massive Simple.Data Chain PetaPoco 轻量级,以前单文件,目前有维护形成项目级别,适合多个数 ...
- java native interface JNI 调用Java方法
在上一篇文章中介绍了JNI.以及java调用JNI.这篇讲一下 JNI调用java方法. 通过使用合适的JNI函数,你能够创建Java对象,get.set 静态(static)和 实例(instanc ...
- Spring4.0MVC学习资料,注解自己主动扫描bean,自己主动注入bean(二)
Spring4.0的新特性我们在上一章已经介绍过了. 包含它对jdk8的支持,Groovy Bean Definition DSL的支持.核心容器功能的改进,Web开发改进.測试框架改进等等.这张我们 ...
- 百万级PHP网站Poppen.de的架构分享心得
在了解过世界最大的PHP站点,Facebook的后台技术后, 今天我们来了解一个百万级PHP站点的网站架构:Poppen.de.Poppen.de是德国的一个社交网站,相对Facebook.Flick ...
- 高效5步走,高速搭建Hadoop2伪分布环境
前两天将Hadoop2的全然分布式搭建文档整理公布于网上(http://blog.csdn.net/aaronhadoop/article/details/24859369).朋友相邀.就再将Hado ...
- MJRefresh实现刷新(使用它的Block方法)
MJRefresh实现刷新(使用它的Block方法) // // YFMVCPostListViewController.m // iOS122 // // Created by 颜风 on 15 ...