主要介绍几个非常酷的方法:
1. 排序
- (NSArray*)sortedArrayUsingSelector:(SEL)aSelector;
数组排序,返回排好序的新数组。
- (NSArray *)sortedArrayUsingComparator:(NSComparator)cmptr
通过块进行数组排序。
- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors
通过排序描述器,构建复杂排序。
code 1:
NSArray *newArray = [array sortedArrayUsingSelector:@selector(compare:)];
code 2:
Book *book1 = [Book name:@"ABC" type:@"jsj"];
Book *book2 = [Book name:@"234" type:@"sx"];
NSArray *array = [NSArray arrayWithObjects:book1,book2, nil];
NSArray *array2 = [array sortedArrayUsingSelector:@selector(compareBook:)];
/// Book class 里实现的比较方法
- (NSComparisonResult)compareBook:(Book *)book {
NSComparisonResult result = [self.type compare:book.type];
// 类型相同,比较名字
if (result == NSOrderedSame) {
result = [self.name compare:book.name];
}
return result;
}
code 3:
NSArray *new2 = [new sortedArrayUsingComparator:^NSComparisonResult(NSString *str1, NSString *str2){
return [str1 compare:str2];
}];
code 4:
// 1.按姓排序
NSSortDescriptor *lastnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastname" ascending:YES];
// 2.再按名排序
NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstname" ascending:YES];
NSArray *descs = [NSArray arrayWithObjects:lastnameDesc, firstnameDesc, nil nil];
NSArray *newArray3 = [array sortedArrayUsingDescriptors:descs];
2.
- (void)makeObjectsPerformSelector:(SEL)aSelector;
- (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(nullable id)argument;
效率高于for循环,类似于NSNotifation机制,并发执行,数组中每个元素执行aSelector中方法。
3.
- (NSString *)componentsJoinedByString:(NSString *)separator;
将数组转换成字符串;
- (NSArray*)componentsSeparatedByString:(NSString*)separator;
将字符串转换成数组;
code:
NSArray *array = [strName componentsSeparatedByString:@","];
NSString *strings = [nameArray componentsJoinedByString:@","];