一、数组
1.不可变数组NSArray
- arrayWithObjects:使用一组对象作为元素创建不可变数组,注意数组的最后一个值需要指定为nil,用来表示参数的结束,但是nil并不会存储在数组中。
- objectAtIndex:获取指定索引位置的数组元素。
- @[elm1,elm2….elmn]:另外一种创建数组的简便方式,不需要以nil作为结尾元素;
- array[index]:另外一种获取指定索引位置元素的方式。
- count:数组中元素个数。
int main(int argc, const char * argv[]) { @autoreleasepool { /*不可变数组*/ //创建不可变数组 方式一 NSArray *arr=[NSArray arrayWithObjects:@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",@"周日",nil]; for(int i=0;i<[arr count];i++){ NSLog(@"%@",[arr objectAtIndex:i]); } //创建不可变数组 方式二 NSArray *[email protected][@"周一",@"周二",@"周三",@"周四",@"周五",@"周六",@"周日"]; for(int i=0;i<[arr1 count];i++){ NSLog(@"%@",arr1[i]); } } }
2.可变数组NSMutableArray
- NSMutableArray array方法创建空的可变数组,数组元素个数未定,可以随着需要增长;
- addObject:向可变数组结尾添加元素;
- insertObject:obj atIndex:i :将对象obj插入数组的第i个元素。
- removeObjectAtIndex:i 删除数组中第i个元素。
- replaceObjectAtIndex:i withObject:obj 将数组中序号为i的对象用obj替换。
- 使用NSLog格式化%@可以显示整个数组,它实际上会调用每个元素的description方法。
int main(int argc, const char * argv[]) { @autoreleasepool { /*可变数组*/ NSMutableArray *marr=[NSMutableArray array]; for (int i=0; i<3; i++) { marr[i][email protected](i+1); } [marr addObject:@(4)]; for (int i=0; i<[marr count]; i++) { NSLog(@"%@",marr[i]); } NSLog(@"%@",marr); } }
二、词典对象(dictionary)
词典也有两种类型:不可变词典NSDictionary和可变词典NSMutableDictionary。
1.不可变词典NSDictionary
- NSDictionary dictionaryWithObjectsAndKeys:创建不可变词典,参数是值-键对组合(注意顺序),以nil结尾。
- allKeys:返回一个数组包含词典中的所有键;
- count:返回词典中的记录数;
- objectForKey:返回key的值对象。
int main(int argc, const char * argv[]) { @autoreleasepool { /*不可变词典*/ NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"学生",@"1",@"教师",@"2", nil]; for (NSString *key in dic) { NSLog(@"key:%@ value:%@",key,[dic objectForKey:key]); } } }
2.可变词典NSMutableDictionary
- NSMutableDictionary dictionary:创建一个可变词典;
- setObject:forKey:把键值对添加到可变词典中;
- removeAllObjects:删除词典中所有的记录;
- removeObjectForKey:删除词典中的指定键key对应的记录;
int main(int argc, const char * argv[]) { @autoreleasepool { /*可变词典*/ //创建可变词典对象 NSMutableDictionary *mdic=[NSMutableDictionary dictionary]; //添加键值对 [mdic setObject:@"学生" forKey:@"1"]; mdic[@"2"]=@"教师"; //显示键值对 NSLog(@"key:1 value is:%@",[mdic objectForKey:@"1"]);//key:1 value is:学生 NSLog(@"key:2 value is:%@",mdic[@"2"]);//key:2 value is:教师 //删除 [mdic removeObjectForKey:@"1"]; NSLog(@"mdic count:%lu",[mdic count]);//mdic count:1 [mdic removeAllObjects]; NSLog(@"mdic count:%lu",[mdic count]);//mdic count:0 } }
三、集合对象(set)
set是一组单值对象集合。
1.NSSet 不可变词典
- setWithObjects:以一个nil为结尾的对象数组创建一个集合。
- containObject:检测某个对象是否包含在集合中。
- count:集合成员个数。
2.NSMutableSet 可变词典
- addObject:向集合中添加对象;
- removeObject:从集合中删除对象;
- removeAllObjects:删除集合中所有对象;
- unionSet:求两个集合的并集;
- intersectSet:求两个集合的交集
3.实例
首先我们自定义分类为NSSet添加自定义方法print。
NSSet+Printing.h
#import <Foundation/Foundation.h> @interface NSSet (Printing) -(void)print; @end
NSSet+Printing.m
#import "NSSet+Printing.h" @implementation NSSet (Printing) -(void)print{ NSLog(@"------"); for(NSNumber *item in self){ NSLog(@"%li",(long)[item integerValue]); } } @end
main.m
#import <Foundation/Foundation.h> #import "NSSet+Printing.h" int main(int argc, const char * argv[]) { @autoreleasepool { //创建不可变集合 NSSet *set=[NSSet setWithObjects:@"1",@"3",@"5", @"7",nil]; //创建可变集合 NSMutableSet *mset=[NSMutableSet setWithObjects:@"1",@"2",@"3",@"4",@"5", nil]; //输出 [set print]; [mset print]; //成员测试 if([set containsObject:@"7"]==YES){ NSLog(@"set contain 7"); }else{ NSLog(@"set does not contain 7"); } //添加对象 [mset addObject:@"6"]; [mset print]; //移除对象 [mset removeObject:@"6"]; //求并集 [mset unionSet:set]; [mset print]; [mset print]; //求交集 [mset intersectSet:set]; [mset print]; } }
时间: 2024-10-13 02:22:45