1 NSArray 不可变
1.1 特性:是一个Cocoa的类,它可以存储任何对象的有序列表,只要有了NSArray,就可以通过各种方式操作它,例如
获取对应索引的对象,遍历整个数组,获取数组的长度,查找数组中的某个对象,1.2 限制:
那就是只能存储Objective-C的对象,而不能存储C语言中的基本数据类型,诸如int,float,double,enum,struct等的指针类型。同时也不能存储nil(即java或C++中的null)。
1.3创建NSArray:
注:"+"表示该方法是一个类方法 同理"-"表示方法是一个实例方法函数原型:+(NSArray*)arrayWithObjects:对象1,对象2,...;
eg: NSArray* array;
array = [NSArray arrayWithObjects:@"abc",@"dracode",@".com",nil];
这样就创建了一个NSArray,包含了"abc","dracode",".com"这3个字符串 nil是列表结束标志,这也是NSArray不能存储nil的原因之一。
1.4获取数组个数:
函数原型:-(unsigned int)count;eg: unsigned int n = [array count]; ===>n=3
1.5获取数组中的指定索引处的对象:
函数原型:-(id)objectAtIndex:(unsigned int)index;eg: id obj = [array objectAtIndex:1]
NSLog(@"array[1]==%@",obj); ==>dracode
1.6 遍历数组
int i=0;for(i=0; i<[array count]; i++){
NSLog(@"array[%d]=%@",i+1, [array objectAtIndex:i]);
其他操作
}
1.7 切分字符串构造NSArray
函数原型: -(NSArray*) componentsSeparatedByString:(NSString*)string;eg: NSString* src = @"www.dracode.com";
NSArray* dstArray = [src componentsSeparatedByString:@"."];
此时 dstArray = ["www","dracode","com"];
1.8 合并NSArray为字符串,并在每个元素之间加入新的token。
函数原型: -(NSString*)componentsJoinedByString:(NSString*)string;NSString* strJoined = [dstArray componentsJoinedByString:@"-"];
此时strJoined = "www-dracode-com";
2 NSMutableArray 可变数组
2.1 创建可变数组 对比 NSMutableString(类似于java中的StringBuffer或者StringBuilder)
注:"+"表示该方法是一个类方法 同理"-"表示方法是一个实例方法函数原型:+(id)arrayWithCapacity:(unsigned)numItems;
eg: array = [NSMutableArray arrayWithCapacity:3];
2.2 添加元素:
函数原型: -(void)addObject:(id)anObject;eg: NSString* pTmp = @"www.dracode.com"; //定义Objective-C类型的字符串
NSArray* pArray = [pTmp componentsSeparatedByString:@"."]; //分解成数组
NSMutableArray* pMutableArr = [NSMutableArray arrayWithCapacity:3]; //创建可变数组
id tmp = nil; //临时的变量
int i=0;
for(i=0; i<[pArray count]; i++){
id = [pArray objectAtIndex:i]; //类似于 id = pArray[i];
[pMutableArr addObject:id]; //添加到可变数组的末尾
}
2.3 删除元素:
函数原型: -(void)removeObjectAtIndex:(unsigned)index;eg: [pMutalbeArr removeObjectAtIndex:0]; //删除第一个元素
3 NSEnumerator 枚举器
3.1 创建
函数原型:-(NSEnumerator*)objectEnumerator;eg: NSEnumerator* enums = [pMutableArr objectEnumerator];
可通过 -(id)nextObject;获取下一个对象
eg: id tmp = nil;
while(id = [enums nextObject]){
NSLog(@"the element is : %@",id);
}
4 字典 NSDictionary
4.1 特性: 类似于HashTable.存储的是一些键值对。以nil表示结束
4.2 创建
函数原型:-(NSDictionary*) dictionaryWithObjectsAndKeys:(id)firstObj,...;eg:
Student* stu1 = [Student new];
Student* stu2 = [Student new];
Student* stu3 = [Student new];
NSDictionary* dict = [NSDictionary dictionaryWithObjectsAndKeys:stu1,@"1",stu2,@"2",stu3,@"3",nil];
其参数列表是以 对象,key,对象,key,对象,key,nil这种格式的。
4.3 根据key来获取词典中的对象
函数原型: -(id) objectForKey:(id)key;若词典中找不到key,则返回nil
eg: Student* first = [dict objectForKey:@"1"];
5 可变词典:NSMutableDictionary
5.1 创建
函数原型:+(id)dictionaryWithCapacity:(unsigned)numItems;eg: NSMutableDictionary* dict = [NSMutableDictionary
dictionaryWithCapacity:10];
5.2 往词典中添加或修改已有的键值对
函数原型:-(void) setObject:(id)obj forKey:(id)key;eg: NSArray* arr = [NSArray arrayWithObjects:@"abc",@"time",@"hold"];
[dict setObject:arr forKey:@"array"];
5.3 根据key来删除对应的Object
函数原型:-(void)removeObjectForKey:(id)key;eg: [dict removeObjectForKey:@"array"];