Oc集合

来源:互联网 发布:淘宝定制可以退款吗 编辑:程序博客网 时间:2024/06/05 01:08
在Foundation中,数组是有序的对象的集合,用来存储对象的有序列表
NSArray中不能存放C语言类型
可以使用NSNumber来转换数据类型
     eg:[NSNumber  numberWithInt: int ];  //整型转换
NSArray
创建:
    -(id) initWithObjects:(id)firstObject,…….//实例方法
       eg: NSArray *array = [ [NSArray alloc ] initWithObjects:@“ ”,….. nil ];
   +(id)arrayWithObjects:(id) firstObject, ….;  //类方法
      eg:NSArray *array = [NSArray arrayWithObjects: @“ “, …. nil ];

获取数组元素个数
  -(NSUInteger)count;
  eg: int count = [array count];

获取数组元素
   -(id) objectAtIndex : (NSUInteger) index;
 eg: NSString *string = [数组 objectAtIndes:__索引值__]; 

注意:数组越界,数组会对加入其中的对象自动把引用计数加一,不能在数组中存放nil

NSMutableArray 类
初始化:
               -(id) initWithCapacity: (NSUInteger) numItems;
               -(id) arrayWithCapacity: (NSUInteger) numItems;
增加对象:
     -(void)addObject: (id) anObject; //在数组的末尾加入一个对象
删除对象:
     -(void) removeAllObjects:   //所有
     -(void) removeLastObject;  //最后一个
     -(void) removeObjectAtIndex: (NSUInteger) index;   //索引
替换:
    -(void) replaceObjectAtIndex: (NSUInteger)index withObject:   (id)anObject;  
   -(void) insertObject:(id)anObject atIndex:(NSUInteger) index;

数组的排序:
         不可变数组: -(NSArray *)sortedArrayUsingDescriptors:(NSArray *) sortDescriptors;  //参与比较的对象
                            -(NSArray *)sortedArrayUsingComparator:(NSArray *) sortDescriptors; //代码快
                     -(NSArray *)sortedArrayUsingSelector:(NSArray *) sortDescriptors; //自定义
  可变: -(void) sortUsingDescriptors:(NSArray *)sortDescriptors;
                 -(void) sortUsingDescriptors:(NSArray *)sortDescriptors;
                 -(void) sortUsingDescriptors:(NSArray *)sortDescriptors;
       eg:  
    定义一个排序描述符的对象
        NSSortDescriptor *sd1 = [NSSortDescriptorsortDescriptorWithKey:@"name"ascending:YES                             ]; 定义一个数组,然后用来盛放排序条件       NSArray *array = [NSArrayarrayWithObject:sd1]; 进行排序        [mArraysortUsingDescriptors:array];
获取枚举器:
       -(NSEnumerator *) objectEnumerator;
eg: NSEnumerator*enumerator = [arrayobjectEnumerator ];  
  //数组个数以被记录,后面不能操作增,删

 使用枚举器遍历数组通过while循环来遍历
   eg: idobj;
          while (obj = [enumeratornextObject]){
               NSLog(@“%@“, obj);
          }
快速枚举:
     for(id objin array){
        NSLog(@“%@“, obj);
     }      / / id类型的变量obj存放的是数组array里的元素

字典:NSDictionary    
          字典采用的健查询的优化存储方式
创建
     -(id)dictionaryWithObjectsAndKeys: (id)obj,……;//参数是成对的,顺序是对象和健,最后加一个nil,表示结束,键值不能重复
取值:
   -(id)objectForKey:(id)aKey;

NSMutableDictionary:
创建:
    +(id)dictionaryWithCapacity:(NSUInteger)num;
添加:
   -(void) setObject: (id) obj  forKey:(id) aKey; //如原来就有的健,会覆盖
删除:
  -(void)removeObjectForKey:(id) aKey;
遍历:
 -(NSArray *)allKeys: //得到字典的所有Key值

NSSet类:
      不能存放相同的对象,数据是无序的
 创建:
     -(id) initWithObjects:(id) firstObject, ……;
     +(id) setWithObjects:(id) firstObject,…….;
获取个数
     -(NSUInteger)count;
获取元素:
     -(NSArray *) allObjects;
     -(id) anyObject;
判断方法:
     -(BOOL) isEqualToSet: (NSSet *) otherSet;
     -(BOOL) member: (id) obj;   //判断本集合中是否包含对象obj

NSMutabelSet类:
创建:
     -(id) initWithCapacity:(NSUInteger) numItem;
    +(id) setWithCapacity:(NSUInteger) numItem;
添加:
     -(void)addObject: (id) object;
删除:
    -(void) removeAllObject;
   -(void) removeObject: (id) object;

数值数据: NSNumber
创建:

+(NSNumber*) numberWithChar: (char) value;   
+(NSNumber*) numberWithInt: (int) value;
+(NSNumber*) numberWithFloat: (float) value;
+(NSNumber*) numberWithBool: (BOOL) value;
eg:   NSNumber* number = [NSNumber  numberWithInt: 3];
        [array addObject: number];
        [dict setObject: number  forKey: @”my”];
获取值:
  -(char) charValue;
  - (int) intValue;
  -(float) floatValue;
  -(BOOL) boolValue;
  (NSString *) stringValue;
eg:NSNumber *number = [NSNumber numberWithInt:3];
        int number = [number intValue];

NSValue:针对结构体来使用的
创建:
  +(NSValue *)valueWithBytes:(const void *)valueobjCType:(const char *)type;
eg: NSRect rect = NSRect(5,5,100,100);
      NSValue *value = [valueWithBytes:&rect objCType:@encode(NSRect)];
      [array addObject: value];
获取值:
    -(void)getValue:(void *) value;
eg:NSValue *value = [array objectAtIndex:0];
     [NSRect rect1];
    [value getValue:&rect1];

NSNull;封装nil空值
 +(NSNull *)null;
eg:[array addObject:[NSNull null]];
    id nullValue = [array objectAtIndex:0];
    if(nullValue == [NSNull null]){
    //判断是否为空
    }
0 0
原创粉丝点击