集合数据类型

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"];

转载于:https://my.oschina.net/leojack/blog/91496

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值