先设定model的元素有code,name
CodeName.h
#import <Foundation/Foundation.h>
@interface CodeName : NSObject
@property (nonatomic, copy) NSString *code;
@property (nonatomic, copy) NSString *name;
+ (CodeName*)codeNameWithCode:(NSString*)code name:(NSString*)name;
@end
CodeName.m
#import "CodeName.h"
@implementation CodeName
- (void)dealloc
{
self.code = nil;
self.name = nil;
[super dealloc];
}
- (BOOL)isEqual:(id)object
{
if (object == self) {
return YES;
}
if (![object isKindOfClass:[self class]]) {
return NO;
}
CodeName *codeName = (CodeName *)object;
return [codeName.code isEqualToString:self.code];
}
+ (CodeName*)codeNameWithCode:(NSString*)code name:(NSString*)name
{
CodeName *codeName = [[[CodeName alloc] init] autorelease];
codeName.code = code;
codeName.name = name;
return codeName;
}
- (NSString*)description
{
return [NSString stringWithFormat:@"code=%@,name=%@", _code, _name];
}
@end
快速索引的使用示例:
CodeName *codeName1 = [CodeName codeNameWithCode:@"code1" name:@"name1"];
NSLog(@"%@", codeName1);
CodeName *codeName2 = [CodeName codeNameWithCode:@"code2" name:@"name2"];
CodeName *codeName3 = [CodeName codeNameWithCode:@"code3" name:@"name3"];
CodeName *codeNameTest = [CodeName codeNameWithCode:@"codeTest" name:@"name3"];
NSArray *array = [NSArray arrayWithObjects:codeName1, codeName2, codeName3, nil];
BOOL flag = [array containsObject:codeName1];
NSLog(@"codeName_1:%@", flag?@"存在":@"不存在");
flag = [array containsObject:codeNameTest];
NSLog(@"codeName_Test:%@", flag?@"存在":@"不存在");
NSInteger index = [array indexOfObject:codeNameTest];
if (index == NSNotFound) {
NSLog(@"codeNameTest NSNotFound");
}
else {
NSLog(@"codeName1:index=%d", index);
}
index = [array indexOfObject:codeName1];
if (index == NSNotFound) {
CFShow(@"codeNameTest NSNotFound");
}
else {
NSLog(@"codeNameTest:index=%d", index);
}
打印结果:
2013-02-07 22:40:25.724 Test[1576:c07] code=code1,name=name1
2013-02-07 22:40:25.726 Test[1576:c07] codeName_1:存在
2013-02-07 22:40:25.727 Test[1576:c07] codeName_Test:不存在
2013-02-07 22:40:25.727 Test[1576:c07] codeNameTest NSNotFound
2013-02-07 22:40:25.728 Test[1576:c07] codeNameTest:index=0
iOS的模糊查询
NSPredicate *predicate = [NSPredicate predicateWithFormat: @"name LIKE[cd] '*me1*'"];
NSArray *results = [array filteredArrayUsingPredicate: predicate];
NSLog (@"%@", results);
打印结果:
2013-02-07 22:44:53.702 Test[1612:c07] (
"code=code1,name=name1"
)