NSArray简析

1.数组抽取

//数组抽取,由一个数组的一部分抽取出一个新的数组
NSArray * array=[[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
NSArray * array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
//[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]
//创建一个数字集合对象,该集合成员是数字1,2,3。
//array1包含3个元素:{@"two",@"three",@"four"}
2.枚举器

//创建一个正序枚举器
NSEnumerator * enume1 = [array objectEnumerator]; //枚举器是读数据的
id obj;
while (obj = [enume1 nextObject]) {
   NSLog(@"%@",obj);
}
//快速枚举(正序)
for(id obj in array) {
   NSLog(@"obj:%@",obj);
}
//创建一个逆序枚举器(个人感觉这个还是比较好用的)
NSEnumerator * enume2 = [array reverseObjectEnumerator];
while (obj = [enume2 nextObject]) {
   NSLog(@"obj = %@",obj);
}

3.字符串分割到数组

NSString * str = @"Yes,I am a good man ";
//以字符串整体作为分割条件
NSArray * array1 = [str componentsSeparatedByString:@" "];
//以@” ” 作为分割条件
NSArray *array2 = [str componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" ,"]];
//以字符作为分割条件 //NSCharacterSet 字符集合
//[NSCharacterSet characterSetWithCharactersInString:@" ,"];
//把字符串@" ,"转 化为一个字符集合
//这个集合的成员就是字符' '和字符','
//返回值是NSArray不要写成NSMuatbaleArray
//OC中的分割函数不像C中strtok()函数,上面的字符串最后的“空格”会分割成一个单独的字符该字符是个空字符,这一点不如C中的分割函数好.
4.把数组元素拼接成字符串

NSArray * array=[[NSArray alloc]initWithObjects:@"one",@"two",@"three",@"four", nil];
NSString * str = [array componentsJoinedByString:@"#"];
//str = @"one#two#three#four"
5.可变数组的排序

创建一个Person类

@interface Person : NSObject

@property NSUInteger age;

-(BOOL)asc:(Person *)person;//升序
-(BOOL)dec:(Person *)person;//降序

@end
@implementation Person

-(BOOL)asc:(Person *)person
{
    return self.age > person.age;
}
-(BOOL)dec:(Person *)person
{
    return self.age < person.age;
}

@end
main函数测试

//可变数组排序
NSMutableArray * array = [[NSMutableArray alloc] init];
NSArray * array1 = [[NSArray alloc] init];
NSInteger i = 0;
while (i++ < 5) {
     Person * person = [[Person alloc] init];
     person.age = arc4random()%10 + 1;
     [array addObject:person];
}
[array sortUsingSelector:@selector(asc:)];
//array由无序变为升序
array1 = [array sortedArrayUsingSelector:@selector(dec:)];
//array1由不存在变成一个含5个元素且降序排列的数组

//sortUsingSelector这是一个排序方法;已经实现了

//但是需要我们提供一个准则(就是一个函数)

//这个准则是(升序)左边 大于右边 进行交换 或者是(降序)左边小于右边进行交换

//数组的元素是哪个类,那么这个准则就写在哪个类中

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章