pragma mark 给数组里面的元素发送消息
void arrMessage() {
RTStudent *stu1 = [RTStudent rtStudent];
RTStudent *stu2 = [RTStudent rtStudent];
RTStudent *stu3 = [RTStudent rtStudent];
NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3, nil];
// 让数组中每个元素都调用test方法
[arr makeObjectsPerformSelector:@selector(test2:) withObject:@"123"];
}
- (void)test2:(NSString *)str
{
}
#pragma mark 遍历数组3
void arrayFor3() {
NSArray *arr = [NSArray arrayWithObjects:@"11",@"222",@"3333", nil];
[arr enumerateObjectsUsingBlock:
^(id obj, NSUInteger idx, BOOL *stop) { // stop 停止遍历
if (idx == 2) {
*stop =YES; // 停止遍历
}
}];
}
#pragma mark 遍历数组4
void arrayFor4() {
RTStudent *stu = [RTStudent rtStudent];
NSArray *arr = [NSArray arrayWithObjects:@"11",@"222",@"3333", nil];
// 获取数组的迭代器
// NSEnumerator *enmumerator = [arr objectEnumerator];
// 反序迭代器(从尾开始遍历元素)
NSEnumerator *enmumerator = [arr reverseObjectEnumerator];
// 获取下一个需要遍历的元素
id obj = nil;
while (obj = [enmumerator nextObject]) {
}
}
#pragma mark 指定范围截取数组元素
void arrary() {
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
NSRange range = NSMakeRange(1, 2);
NSArray *array5 = [array subarrayWithRange:range];
NSLog(@"%@",array5); // 2 3
}
#pragma mark 数组其他用法
void arrayOther() {
NSArray *array = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil];
NSString *str = [array componentsJoinedByString:@"+"];
NSLog(@"%@",str);
NSString *path = @"/Users/yumaohua/Desktop/abc.xml";
[array writeToFile:path atomically:YES];
NSArray *arr2 = [NSArray arrayWithContentsOfFile:path];
NSLog(@"%@",arr2);
}
#pragma mark 数组排序1
void arrSort1() {
NSArray *array = [NSArray arrayWithObjects:@"4",@"3" ,@"9",@"2",nil];
// 返回一个排序好的数组,对原数组元素数序不变
// 指定元素的比较方法:compare:
NSArray *array2 = [array sortedArrayUsingSelector:@selector(compare:)];
NSLog(@"array2 = %@",array2);
}
#pragma mark 数组排序2
void arraSort2() {
Student *stu1 = [Student student:@"Rong" firstname:@"Tian"];
Student *stu2 = [Student student:@"Huang" firstname:@"Long"];
Student *stu3 = [Student student:@"Rong" firstname:@"Zhen"];
Student *stu4 = [ Student student:@"Jing" firstname:@"ji"];
NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3,stu4, nil];
NSArray *arr2 = [arr sortedArrayUsingSelector:@selector(compareStudent:)];
NSLog(@"arr2= %@",arr2);
}
#pragma mark 数组排序3
void arraSort3() {
Student *stu1 = [Student student:@"Rong" firstname:@"Tian"];
Student *stu2 = [Student student:@"Huang" firstname:@"Long"];
Student *stu3 = [Student student:@"Rong" firstname:@"Zhen"];
Student *stu4 = [ Student student:@"Jing" firstname:@"ji"];
NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3,stu4, nil];
NSArray *arr2 = [arr sortedArrayUsingComparator:^NSComparisonResult(Student *obj1, Student *obj2) {
// 先按照姓排序,如果姓一样排序名字
NSComparisonResult result = [obj1.lastName compare:obj2.lastName];
if (result == NSOrderedSame) { // 姓相同 > 比较名字
result = [obj1.firstName compare:obj2.firstName];
}
return result;
}];
NSLog(@"arr2 = %@",arr2);
}
#pragma mark 数组排序4
void arraSort4() {
// 1先按照书名进行排序 2.再按照姓 3名 排序
Student *stu1 = [Student student:@"Rong" firstname:@"Tian" bookName:@"book4"];
Student *stu2 = [Student student:@"Huang" firstname:@"Long" bookName:@"boo1"];
Student *stu3 = [Student student:@"Rong" firstname:@"Zhen" bookName:@"book3"];
Student *stu4 = [ Student student:@"Jing" firstname:@"ji" bookName:@"book2"];
NSArray *arr = [NSArray arrayWithObjects:stu1,stu2,stu3,stu4, nil];
// 1.先按照书名进行排序 book.name >对Student的属性book对象的name排序
NSSortDescriptor *bookNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"book.name" ascending:YES];
// 2.再按照姓进行排序
NSSortDescriptor *lastnameNameDesc = [NSSortDescriptor sortDescriptorWithKey:@"lastName" ascending:YES];
// 3.再按照名字进行排序
NSSortDescriptor *firstnameDesc = [NSSortDescriptor sortDescriptorWithKey:@"firstName" ascending:YES];
// 按顺序添加排序描述器
NSArray *arr2 = [NSArray arrayWithObjects:bookNameDesc,lastnameNameDesc,firstnameDesc, nil];
NSArray *array = [arr sortedArrayUsingDescriptors:arr2];
NSLog(@"array= %@ %zi",array,[array retainCount]);
}
来源:一起扯扯