1、NSArray:不可变数组
(1)基本知识
a、元素索引与C语言一样从0开始;
b、数组可以存放不同类的对象也可以存放同一类的对象;(C只能同类型)
c、只能存放OC对象,不能存放非OC对象(int,double,enum,struct等),不能存放nil,nil被用于标识数组的结束;
d、不可变数组,一旦创建,不能添加、删除或修改其中的元素;
(2)NSArray的生成和初始化
较常见的方法:
MusicPlayer *player = [[MusicPlayer alloc] init];
NSArray *array1 = [NSArray array];
NSArray *array2 = [NSArray arrayWithObject:@"obj1"];
NSArray *array3 = [NSArray arrayWithObjects:@1,@"obj2",player, nil];
NSArray *array4 = [NSArray arrayWithArray:array3];
NSArray *arrayNew = @[@"obj1",@2,player];
NSLog(@"%@",array4);
output:
(
1,
obj2,
"<MusicPlayer: 0x100206850>"
)
(2)访问数组元素
- (NSUInteger)count;
- (NSUInteger)indexOfObject:(id)anObject;
- (BOOL)containsObject:(id)anObject;
- (id)lastObject;
- (id)objectAtIndex:(NSUInteger)index;
- (NSArray *)subarrayWithRange:(NSRange)range;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
直接用array[0]的形式访问第一个元素,下标0开始计数
NSLog(@"%lu",[array4 count]);
if ([array4 indexOfObject:@1] != NSNotFound) {
NSLog(@"元素序列为:%lu",[array4 indexOfObject:@1]);
}
else {
NSLog(@"没找到");
}
if ([array4 containsObject:@"obj2"]) {
NSLog(@"包含该元素");
}
else {
NSLog(@"不包含该元素");
}
NSLog(@"%@",[array4 lastObject]);
NSLog(@"%@",[array4 objectAtIndex:1]);
NSLog(@"数组第二个元素是:%@",array4[1]);
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
output:
3
元素序列为:0
包含该元素
<MusicPlayer: 0x100113db0>
obj2
数组第二个元素是:obj2
(3)比较
- (BOOL)isEqualToArray:(NSArray *)otherArray;
- (id)firstObjectCommonWithArray:(NSArray *)otherArray;
(4)为数组添加元素
- (NSArray *)arrayByAddingObject:(id)anObject;
- (NSArray *)arrayByAddingObjectsFromArray:(NSArray *)otherArray;
(5)字符串与数组
NSString *str = @"111-222-333";
NSArray *array5 = [str componentsSeparatedByString:@"-"];
NSLog(@"%@", array5);
output:
(
111,
222,
333
)
- (NSString *)componentsJoinedByString:(NSString *)separator;
NSLog(@"%@",[array4 componentsJoinedByString:@"!!!"]);
output:
1!!!obj2!!!<MusicPlayer: 0x100111b10>
(6)关于数组的内容方法还有很多,列举不完的,所以这里只是列举部分常见常用的方法。
2、NSMutableArray:可变数组
(1)基本知识
a、NSMutableArray是NSArray的子类,NSArray的所有方法都可以用;
b、可变数组,存储空间是动态的,可以随意添加或删除其中的元素
(2)可变数组的初始化
可以指定初始化一个长度为numItems的可变数组,也可以使用array方法创建长度为0的可变数组,而后添加。
+ (instancetype)arrayWithCapacity:(NSUInteger)numItems;
NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:5];
- (instancetype)initWithCapacity:(NSUInteger)numItems NS_DESIGNATED_INITIALIZER;
NSMutableArray *mutableArray1 = [[NSMutableArray alloc] initWithCapacity:5];
(3)追加或替换元素
追加
- (void)addObject:(id)anObject;
- (void)addObjectsFromArray:(NSArray *)otherArray;
- (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
替换
- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
- (void)replaceObjectsInRange:(NSRange)range withObjectsFromArray:(NSArray *)otherArray;
- (void)setArray:(NSArray *)otherArray;
- (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
(4)删除数组中的额元素
- (void)removeAllObjects; //数组置空
- (void)removeLastObject; //删除数组最后一个元素
- (void)removeObjectAtIndex:(NSUInteger)index; //删除index位置上的元素
- (void)removeObjectsInRange:(NSRange)range; //删除range范围的元素
- (void)removeObject:(id)anObject; //删除数组中所有与anObject相等的元素
- (void)removeObjectsInArray:(NSArray *)otherArray; //从当前数组中删除otherArray数组中包含的所有元素