// // ZYPinYinSearch.m // ZYPinYinSearch // // Created by soufun on 15/7/27. // Copyright (c) 2015年 ZY. All rights reserved. // #import "ZYPinYinSearch.h" #import "ChineseInclude.h" #import "PinYinForObjc.h" #import "objc/runtime.h" #import @implementation ZYPinYinSearch +(NSArray *)searchWithOriginalArray:(NSArray *)originalArray andSearchText:(NSString *)searchText andSearchByPropertyName:(NSString *)propertyName{ NSMutableArray * dataSourceArray = [[NSMutableArray alloc]init]; NSString * type; if(originalArray.count <= 0){ UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示" message:@"数据源不能为空" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil]; [alert show]; return originalArray; } else{ id object = originalArray[0]; if ([object isKindOfClass:[NSString class]]) { type = @"string"; } else if([object isKindOfClass:[NSDictionary class]]){ type = @"dict"; NSDictionary * dict = originalArray[0]; // NSLog(@"字典keys:%@",[dict allKeys]); BOOL isExit = NO; for (NSString * key in dict.allKeys) { if([key isEqualToString:propertyName]){ isExit = YES; break; } } if (!isExit) { UIAlertView * alert = [[UIAlertView alloc]initWithTitle:@"提示" message:[NSString stringWithFormat:@"数据源中的字典没有你指定的key:%@",propertyName] delegate:nil cancelButtonTitle:@"确定" otherButtonTitles: nil]; [alert show]; return originalArray; } } else{ type = @"model"; NSMutableArray *props = [NSMutableArray array]; unsigned int outCount, i; objc_property_t *properties = class_copyPropertyList([object class], &outCount); for (i = 0; i0&&![ChineseInclude isIncludeChineseInString:searchText]) { for (int i=0; i0) { [dataSourceArray addObject:originalArray[i]]; continue; } NSString *tempPinYinHeadStr = [PinYinForObjc chineseConvertToPinYinHead:tempString]; // NSLog(@"%@",tempPinYinHeadStr); NSRange titleHeadResult=[tempPinYinHeadStr rangeOfString:searchText options:NSCaseInsensitiveSearch]; if (titleHeadResult.length>0) { [dataSourceArray addObject:originalArray[i]]; continue; } } else { NSRange titleResult=[tempString rangeOfString:searchText options:NSCaseInsensitiveSearch]; if (titleResult.length>0) { [dataSourceArray addObject:originalArray[i]]; continue; } } } } else if (searchText.length>0&&[ChineseInclude isIncludeChineseInString:searchText]) { for (id object in originalArray) { NSString * tempString; if ([type isEqualToString:@"string"]) { tempString = object; } else{ tempString = [object valueForKey:propertyName]; } NSRange titleResult=[tempString rangeOfString:searchText options:NSCaseInsensitiveSearch]; if (titleResult.length>0) { [dataSourceArray addObject:object]; } } } return dataSourceArray; } @end