在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 = [ NSSortDescriptor sortDescriptorWithKey : @"name" ascending : YES ]; 定义一个数组,然后用来盛放排序条件 NSArray *array = [ NSArray arrayWithObject :sd1]; 进行排序 [ mArray sortUsingDescriptors :array];
获取枚举器:
-(NSEnumerator *) objectEnumerator;
eg: NSEnumerator * enumerator = [array objectEnumerator ];
//数组个数以被记录,后面不能操作增,删
使用枚举器遍历数组 , 通过 while 循环来遍历
eg: id obj;
while (obj = [enumerator nextObject ]){
NSLog(@“%@“, obj);
}
快速枚举:
for (id obj in 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 *)value objCType :(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]){
//判断是否为空
}
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 = [ NSSortDescriptor sortDescriptorWithKey : @"name" ascending : YES ]; 定义一个数组,然后用来盛放排序条件 NSArray *array = [ NSArray arrayWithObject :sd1]; 进行排序 [ mArray sortUsingDescriptors :array];
获取枚举器:
-(NSEnumerator *) objectEnumerator;
eg: NSEnumerator * enumerator = [array objectEnumerator ];
//数组个数以被记录,后面不能操作增,删
使用枚举器遍历数组 , 通过 while 循环来遍历
eg: id obj;
while (obj = [enumerator nextObject ]){
NSLog(@“%@“, obj);
}
快速枚举:
for (id obj in 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 *)value objCType :(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]){
//判断是否为空
}