住院好几天了。昨天刚安上无线网卡,写了半天笔记结果破输入法死机白忙活了,还得重搞。 数组
NSArray 是Cocoa的一个类,用于存放对象,这个类不能够直接存放C中数据类型的数据,须要转换成Object-C的对象才能够。 调试
建立一个NSArray对象的方法有不少,这里先说一个比较简单的方法。 code
+ (NSArray) arrayWithObjects:(id) obj, ...count 用于获取NSArray中的对象个数
-(unsigned int) count;objectAtIndex 用于根据索引获取相应的对象,注意若是访问了不存在的索引,不会像PHP同样最多出现个Notice,将会致使程序崩溃,其实这是个好事,由于他会让你及时的修正,避免因为使用非法索引而致使出现难以调试的Bug。
- (id) objectAtIndex:(unsigned int)index;
componentsJoinedByString 这个跟PHP中的implode相似,用于根据一个字符串来将数组链接成一个新的字符串。 component
- (NSString *) componentsJoinedByString:(NSString *)dec;componentsSeparatedByString 这个跟PHP中的explode相似,用于根据一个字符串来拆分另一个字符串,并将拆分后的结果存放在NSArray中。
- (NSArray *) componentsSeparatedByString:(NSString *)dec;
NSMuTableArray 跟NSString同样NSArray也是不可变对象,一旦建立后不能够进行增删操做,须要NSMuTableArray 来操做 对象
NSMuTableArray 的建立方式也很简单 索引
+(id) arrayWithCapacity:(unsigned int)numItems;addObjects 用于在数组结尾增长新的对象
+ (void) addObject:(id) anObject;removeObjectAtIndex 根据索引删除数组中的对象
- (void) removeObjectAtIndex:(unsigned int) index;
以上是数组的简单操做,这里介绍下几种简单的遍历方式。 ci
第一种 使用for循环加 count 方法遍历 rem
int i = 0; for(i = 0; i < [array count]; i++) { [array objectAtIndex:i] }第二种 使用for in方式遍历
for(NSString *str in array) { 操做 }第三种 使用枚举方式遍历
NSEnumerator *enumer; emumer = [array objectEnumerator]; NSString *str; while(str = [enumer nextObject]) { 操做 }要注意的是 使用这种方式遍历 遍历过程当中不能够对数组进行增删操做 不然将会出现一些未知的错误
NSDictionary Object-C 容许你经过这个类来定义字典数据。 字符串
+ (id) dictionaryWithObjectsAndKeys: (id) firstObject,...;
NSDictionary *dicts; dicts = [NSDictionary dictionaryWithObjectsAndKeys: nameObj, @"name", oldObj, @"old", sexOBj, @"sex" ];objectForKey 根据字典的key来获取对象
- (id) objectForKey: (id) akey;
使用NSMuTableDictionary 来处理建立一个动态的字典 get
+ (id) dictionaryWithCapacity: (unsigned int)numItems;setObject 用于对字典添加一条Key值,若是key存在则覆盖
-(void) setObject:(id) anObject forKey:(id) aKey;removeObjectForKey 删除字典中的一个key值
- (void) removeObjectForKey:(id) akey;
像以前说的同样,NSArray和NSDictionary都只能存储对象,C类型的数据是没法直接存储的,因此若是须要存储这些数据的话必需要转换成对象后才能够,下面介绍一些转换方法。
NSNumber类封装了一些方法用于将一些数值类型转换成对象。
+(NSNumber *) numberWithChar:(char) value; +(NSNumber *) numberWithInt:(int) value; +(NSNumber *) numberWithFloat:(float) value; +(NSNumber *) numberWithBool:(BOOL) value;从对象中获取这些数据的值也很简单
- (int) intValue; - (char) charValue; - (float) floatValue; - (BOOL) boolValue; - (NSString *) stringValue;
NSValue
NSNumber 就是 NSValue的一个子类,使用NSValue能够包装任意类型的数据,使其能够放在数组或者字典中。
+ (NSValue *) valueWithBytes: (const void *)value objCtype: (const char *)type;第一个参数使要包装的数据地址,使用C的取址符获取,第二个参数用于描述改数据的字符串,主要描述了数据类型和大小。使用@encode可使用指令获取,例如 @encode(NSRect)。
getValue 使用getValue方法能够获取NSValue的实际值
- (void *) getValue: (void *)value;返回的数据将存放在第一个参数所指的地址中。
Cocoa还提供了一些比较便捷的方法用于处理经常使用的结构
+ (NSValue *) valueWithPoint: (NSPoint) point; + (NSValue *) valueWithSize: (NSSize) size; + (NSValue *) valueWithRect: (NSRect) rect; - (NSPoint) pointValue; - (NSSize) sizeValue; - (NSRect) rectValue;
NSNull 这个数据类型用于表示一个 为空的数据(nil) 相似PHP的 NULL,表示什么都没有,使用null方法能够建立这个对象。
+ (NSNull *)null;NSNull的值老是同样的 因此 能够直接用 == 进行比较。