1、创建数组对象
(1)实例方法创建数组对象
//从Xcode 4.6 以后允许用下述方式来创建数组;
NSArray * array1 = @[@"one", @"two", @"three", [NSString stringWithFormat:@"%d", 1]];
//用另外一个数组创建数组
NSArray * array2 = [[NSArray alloc] initWithArray:array1];
//用 要保存的对象来创建数组
NSArray * array3 = [[NSArray alloc] initWithObjects:@"one", @"two", @"three", nil];
(2)类方法创建数组对象
//用类方法创建数组
NSArray * array4 = [NSArray arrayWithArray:array3];
NSString * array5 = [NSArray arrayWithObjects:@"one", @"two", @"three", nil];
2、遍历数组
NSArray * array = @[@"one", @"two",@"three"];
//[array count];给数组对象发送count的消息,来获取数组元素的个数
//for 循环遍历
for(int i = 0; i < [array count]; i++){
NSString * str = array[i];
// NSLog(@"%@", str);
// NSLog(@"%@", [array objectAtIndex:i]);
}
//for(指针 in 需要遍历的集合){
//
//}
//for in 循环,循环一旦开始,就不能去改变集合
for (NSString * str in array) {
// NSLog(@"%@", str);
}
//枚举器遍历
NSEnumerator * emu = [array objectEnumerator];
NSString * str;
while ((str = [emu nextObject]) != nil) {
NSLog(@"%@", str);
}
3、不可变数组NSArray常用方法
<1>获取数组元素个数
[array count];
<2>通过索引获取相应的元素
[array objectAtIndex:2];
<3>通过对象地址获取在数组中的索引
NSUInteger i = [array indexOfObject:@"one"];
<4>判断数组中数组包含元素anObject
BOOL b = [array containsObject:@"two"];
<5>获取数组的最后一个元素
[array lastObject];
<6>把数组元素内容按照字符串进行拼接
NSString * str1 = [array componentsJoinedByString:@"#"];
<7>把字符串转换数组,是<7>的逆过程
//将字符串按照传入的字符进行分割,并且把分割好的字符串放进一个数组中返回
NSString * str2 = @"yes i am a so bad man";
NSArray * array1 = [str2 componentsSeparatedByString:@" "];
//用传入的字符串的所有字符创建一个字符集合
NSCharacterSet * set = [NSCharacterSet characterSetWithCharactersInString:@" ,.*"];
NSArray * array2 = [str2 componentsSeparatedByCharactersInSet:set];
<8>不可变数组的排序
NSArray *array1 = @[@"5",@"4",@"3",@"2",@"1"];
//系统提供的方法 默认升序 不可变数组的排序
NSArray *array2 = [array1 sortedArrayUsingSelector:@selector(compare:)];
4、可变数组(NSMutableArray)对象进行增删改操作的方法
(1)【重置数组】
[muArray3 setArray:muArray];
(2)【追加和插入元素】
//添加元素
[muArray3 addObject:@"four"];
//在指定位置插入元素
[muArray3 insertObject:@"five" atIndex:4];
(3)【删除元素】
//删除传入的对象
[muArray3 removeObject:@"five"];
//删除所有元素
[muArray3 removeAllObjects];
//删除最后一个元素
[muArray3 removeLastObject];
(4)【替换指定位置的元素】
//替换指定位置的元素
[muArray3 replaceObjectAtIndex:0 withObject:@"***"];
(5)【交换两个元素的位置】
//元素交换位置
[muArray3 exchangeObjectAtIndex:0 withObjectAtIndex:1];
5、可变数组的排序
(1)使用冒泡两层for循环对可变数组排序
NSMutableArray * array = [[NSMutableArray alloc] initWithObjects:@"one", @"two", @"three", @"four", nil];
for(int i = 0; i < [array count]; i++)
{
for(int j = 0; j < [array count] - 1 - i; j++)
{
NSString * str1 = array[j];
NSString * str2 = array[j+1];
NSComparisonResult result = [str1 compare:str2];
if(result == NSOrderedDescending)
{
[array exchangeObjectAtIndex:j withObjectAtIndex:j+1];
}
}
}
(2)可变数组系统方法排序
NSArray *array1 = @[@"5",@"4",@"3",@"2",@"1"];
//可变数组
NSMutableArray *array2 = [NSMutableArray arrayWithArray:array1];
//无返回值 改变数组元素的顺序
[array2 sortUsingSelector:@selector(compare:)];
数字对象
如何把基本数据类型(int char long NSInteger BOOL等)存放到OC数组或者字典对象中
NSNumber * number = [[NSNumber alloc] initWithInt:i];
NSArray * array = [[NSArray alloc] initWithObjects:number, nil];
6、类型判断:- (BOOL)isKindOfClass:(Class)aClass;
Person * person = [[Person alloc] init];
BOOL b = [person isKindOfClass:[Person class]];
if (b) {
NSLog(@"小明是Person 创建出来的对象");
}else{
NSLog(@"小明不是Person 创建出来的对象");
}