1.OC的数组成员是任意的对象指针 与C中的链表结构类似(以nil结尾) 一切的数组操作不能越界
OC的数组分为不可变数组 NSArray 可变数组 NSMutableArray
NSArray
* array = [[NSArray alloc]initWithObjects:@
"one"
,@
"two"
,@
"three"
,
nil];
NSLog(@
"%@"
,[array
objectAtIndex:0]);
//通过下标获取数组成员(下标从0开始)
NSLog(@
"%ld"
,[array
count]);
//获取数组有效成员个数
(不包括nil)
for
(i = 0; i < [array count]; i++) {
//遍历数组(C方法)
NSLog(@
"%@"
,[array
objectAtIndex:i]);
}
NSLog(@
"%@"
,array);
//(OC)查看数组内容(先给array发送description消息,然后给每个成员都发送一个description消息)
NSArray
* array1 = [[NSArray alloc]initWithArray:array];
//创建数组对象
相当于拷贝
NSArray
* arry2 = [NSArray arrayWithArray:array];
//创建数组对象
相当于拷贝
NSEnumerator
* enumer = [array objectEnumerator];
//正序枚举器
//创建一个枚举器
把数组的每个元素的地址一次赋给枚举器,然后建立起某种关联 (枚举器只能用来读数组成员)
//枚举时
会和数组创建某种关联(修改监视器/迭代器) 限制枚举的同时不能修改元素 只能读不能写
id
obj;
//第一次循环把数组的第一个元素赋给obj
第二次循环把第二个数组元素赋给obj
while
(obj = [enumer nextObject]) {
//遍历数组
NSLog(@
"%@"
,obj);
}
//快速枚举
第一次循环把array的第一个元素赋给ob 第二次循环把array的第二个元素赋给ob 直到nil(只能读不能改)
for
(id
ob in array){
NSLog(@
"%@"
,ob);
}
//逆序输出数组(创建逆序枚举器
第一次循环把最后一个元素赋给obj )
NSEnumerator
* enumer1 = [array reverseObjectEnumerator];
while
(obj = [enumer1 nextObject]) {
NSLog(@
"%@"
,obj);
}
if
([obj isKindOfClass:[Dog
class
]])
//获取类的类型
判是否是指定类的对象
if
([obj isMemberOfClass:[Dog
class
]])
{
}
-------查找
NSArray
* array = [[NSArray alloc]initWithObjects:@
"one"
,@
"two"
,@
"three"
,@
"one"
,
nil];
NSUInteger
index = [array indexOfObject:@
"one123"
];
//返回第一个找到的数组成员对应的下标
找不到返回NSNotFound
index
= [array indexOfObject:@
"one"
inRange:NSMakeRange(1, 3)];
//在指定范围内查找
if
(index != NSNotFound) {
NSLog(@
"%ld"
,index);
}
----抽取
组成新的数组
NSArray
* array1 = [array objectsAtIndexes:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 3)]];
《数字集合》
NSIndexSet这是个数字集合类
[NSIndexSet
indexSetWithIndexesInRange:NSMakeRange(1, 3)]产生一个数字集合
NSMutableArray
* array = [[NSMutableArray alloc]initWithObjects:@
"one"
,@
"two"
,@
"three"
,@
"four"
,
nil];
[array
addObject:@
"five"
];
//在数组尾部插入元素
[array
insertObject:@
"six"
atIndex:5];
//在数组指定下标位置插入元素(不能越界,最大值为length)
[array
removeObject:@
"six"
];
//删除指定元素(数组中出现的所有位置都将被删除)
[array
removeObject:@
"two"
inRange:NSMakeRange(0, 3)];
//从指定下标位置开始的指定长度内删除指定元素
[array
removeLastObject];
//删除最后一个元素
[array
removeAllObjects];
//删除所有元素
[array
replaceObjectAtIndex:3 withObject:@
"ios"
];
//将指定下标位置元素替换为指定的元素
[array
exchangeObjectAtIndex:0 withObjectAtIndex:3];
//将指定下标的两个元素进行交换
//@""
空的字符串对象
-------分割
NSString
* ptr = @
"I
am a man"
;
NSArray
* array = [ptr componentsSeparatedByString:@
"
"
];
//将字符串整体作为分割条件
返回值为NSArray不可变数组
NSMutableArray
* array1 = [NSMutableArray arrayWithArray:array];
//若修改,则将NSArray转化为NSMutableArray
NSArray
* array2 = [ptr componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@
",
"
]];
//以字符串中的字符作为分割条件进行分割
《字符集合》
NSCharacterSet
这是个字符集合类
[NSCharacterSet
characterSetWithCharactersInString:@
",
"
]
//把字符串转化为字符集合
-------拼接
NSString
* str = [array componentsJoinedByString:@
"
"
];
若分割条件出现在开头或者结尾,则会出现空串@
""
,如果不需要,则需要转化成NSMutableString对空串进行处理
func1:
[array1 removeObject:@
""
];
//找到空串直接删除
func2:
for
(id
obj in array1){
if
([obj
length] == 0)
//空串的长度为0
if
([obj
isEqualToString:@
""
])
//与空串进行比较(字符串是不能进行==比较的,要使用函数)
}