IPHONE 开发之数组的排序、过滤、删除

来源:互联网 发布:网络制式b3什么意思 编辑:程序博客网 时间:2024/06/03 20:38

数组 NSArray  NSMultableArray

 

一些简单的增加、插入操作就不谈了,很简单,下面主要说下 排序、过滤、删除

 

1.排序

Person 是一个对象,里面有fistName和lastName属性

  
-(void)sortForArray:(NSArray *)array{//String sort 使用自带 compare 方法NSArray *sortedArray=[array sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];//object sort 使用NSSortDescriptor函数,能够针对对象内部属性 比较大小NSSortDescriptor *sorter=[[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES];[array sortedArrayUsingDescriptors:[NSArray arrayWithObject:sorter]];[sorter release];//object sort2 更加灵活,能够自定义比较[array sortedArrayUsingSelector:@selector(compareForArray:)];}-(NSInteger)compareForArray:(Person *)another{NSComparisonResult compareResult=[self.fistName compare:another.fistName];if (compareResult==NSOrderedSame) {return 0;}else if (compareResult==NSOrderedAscending) {return -1;}else {return 1;}}

 

2.过滤

主要是对  NSPredicate 的使用

-(void)filtPersonWithPredicate:(NSArray *)array{NSPredicate *pre1=[NSPredicate predicateWithFormat:@"self.fistName beginWith[c] 'a'"];NSArray *newArray1=[array filteredArrayUsingPredicate:pre1];}这里写的很简单,注意参数,自定很多,比如"self.fistName.length>10" ("self.fistName like  &@",@"王") 等等

另外 NSArray 对应 使用 filteredArrayUsingPredicate,这里会产生一个新的数组

而对于 NSMultableArray,对应 适应filterUsingPredicate,这里不会产生新的数组,而是在原数组上修改;

 

3.删除

对于数组的删除,推荐用下面的方法,不要对原数组 循环删除,可能会有错误

-(void)removePerson:(NSString *)firstName Persons:(NSMutableArray *)array{          //这里新建了个数组 用于储存 要被删除的对象NSMutableArray *removeArray=[[NSMutableArray alloc] init];for (Person *per in array) {if (firstName&&[firstName rangeOfString:per.fistName options:NSLiteralSearch|NSCaseInsensitiveSearch].length==0) {[removeArray addObject:per];}}          //删除对象[array removeObjectsInArray:removeArray];         [removeArray release];}


 
	
				
		
原创粉丝点击