一、一些有用的数据类型 NSRange范围 typedef struct }NSRange; unsigned int是C语言中的int类型 location用来存放字段范围的起始位置,length是该范围内所含元素的个数 字符串”Objective-C is a cool language”中cool的location为17,length为4 三种赋值方式: (1) NSRange range; range.location = 17; range.length = 4; (2) NSRange range = {17,4}; (3) NSRange range = NSMakeRange(17,4); 可以在方法调用中传递参数 [anObject 几何数据类型 NSPoint笛卡儿平面中的坐标点(x,y) typedef struct _NSPoint{ }NSPoint; 快捷函数:NSMakePoint() NSSize用来存储长度和宽度 typedef }NSSize; 快捷函数:NSMakeSize() NSRect矩形数据类型 typedef }NSRect; 快捷函数:NSMakeRect(); 二、字符串NSString类 NSString类,其字符串以@开头,例@”Hello World” 格式化字符串 stringWithFormat方法 +(id) stringWithFormat(NSString *)format,…. 最后的….表示这个方法可以接收多个逗号隔开的其他参数 +(id)表示这个方法属于类对象不属于类的实例对象,类方法可以访问全局数据 (-)声明的方法是实例方法,在实例对象中运行 例:NSString *height; 字符串长度 length方法 -(unsigned 例 unsigned int length = [height length]; 在表达式中使用 if([height length] > 35){ } 字符串比较方法 isEqualToString方法可以用来比较接收方(接收消息的对象)和当做参数传递来的字符串,返回BOOL值 例: NSString *thing1 = @”hello”; NSString *thing2 = @”hello”; if([thing1 isEqualToString: thing2]){ } compare方法,将接收对象和传递来的字符串逐个字符进行比较,返回一个NSComparisonResult(枚举型数据),是区分大小写的比较 typedef } NSComparisonResult; 例:[@”aardvark” [@”zoinks” 不区分大小写的参数 -(NSComparisonResult) options参数是一个位掩码,可以使用位或|来添加选项标记 例: if([thing1 compare :thing2 option : NSCaseInsensitiveSearch | NSNumericSearch] == NSOrderedSame) { } 字符串检索 -(BOOL)hasPrefix:(NSString *) aString; -(BOOL)hasSuffix:(NSString *) aString; 例子:if([filename hasPrefix: @”draft”]) 字符串某处包含其他字符串 -(NSRange) rangeOfString : (NSString *)aString; 例:NSRange range = [fileName rangeOfString : @"chapter"]; 找到了range.start和length为数字,没找到start为NSNotFound 可变性的字符串 NSMutableString NSString是不可变的字符串,NSMutableString是NSString的子类可以改变字符串的长度 使用类方法stringWithCapacity创建或stringWithFormat –因为继承的关系NSString中的类也可调用 +(id)stringWithCapacity:(unsigned) capacity; 例:NSMutableString *string; 附加新字符串appendString或appendFormat -(void) appendString: (NSString *) aString; -(void) appendFormat: (NSString *) format, ….; 删除字符串中的字符deleteCharactersInRange 例:创建朋友列表 NSMutableString *friends; 三、集合 NSArray不可变数组 NSArray可以存入任意类型的对象,通过索引访问对象 构造方法+(id)arrayWithObjects:object, …. , nil; 结尾处必须加nil已表示赋值结束 例子: 获取数组对象个数 -(unsigned) count; 获取特定索引处的对象 -(id) objectAtIndex: (unsigned int) index; 例子:二者结合用于循环 } 切分数组 -componentsSeparatedByStr 例子: 用componentsJoinedByString NSMutableArray可变数组 可以任意添加和删除数组中的对象 构造方法: +(id) arrayWithCapacity : (unsigned) numitems; 例: NSMutableArray *array; array = [NSMutableArray 使用addObject在数组末尾添加对象: -(void) addObject : (id) anObject; 例: for(i = 0; i < 4 ; i++){ } 使用removeObjectAtIndex删除对象: -(void) removeObjectAtIndex : (unsigned) index; 例:[array 四、枚举 NSEnumerator使用枚举来迭代运算集合 通过objectEnumerator从前向后遍历集合 通过reverseObjectEnumerator从后向前遍历集合 -(NSEnumerator *) objectEnumerator; -(NSEnumerator *) reverseObjectEnumerator; 利用while循环向枚举器请求nextObject对象(下一个对象): -(id) nextObject; 当nextObject返回nil时循环结束 举例代码: Tip:对可变数组操作时不能通过添加或删除对象来改变数组容器,否则程序会崩溃 快速枚举 在Mac OS X 10.5 Leopard 中添加了此方法,之前版本无法使用 循环会遍历数组中的每个元素,并用指定的变量存储每个数组对象 例: NSDictionary不可变字典集合 键值对集合,不可变集合,在创建时就要提交全部的对象和关键字 字典集合对于频繁查询和大型数据集来说要比其他数组高效的多,他直接通过键查询而无需遍历集合 构造函数+(id) dictionaryWithObjectsAnd 此方法接受对象和关键字交替存储的序列,以nil值作为终止符,不能在集合中添加nil值 举例代码: 使用方法objectForkey来获取字典中的值,向方法传递对应值的关键字 -(id) objectForKey : (id) akey; 举例代码: 如果没有找到会返回nil值 NSMutableDictionary可变字典集合 构造函数+(Id) dictionaryWithCapacity : (unsigned int) numitems; 长度只是建议无限制 也可使用dictionary 使用setObject : forKey方法给字典添加元素 -(void) setObject : (id) anObject forKey : (id) aKey; 举例代码: 如果已经有了该对象则修改该对象 使用removeObjectForKey方法删除关键字和对象 -(void)removeObjectForKey : (id) akey; 举例代码: 五、各种基本数据类 因为NSArray和NSDictionary只能存储对象,所以Objective-C提供了将基础数据类型封装为对象的类 NSNumber类包装基本数据类型 使用下列类方法创建新的NSNumber对象 +(NSNumber +(NSNumber +(NSNumber +(NSNumber 还有很多其他数据类型的方法,行驶大同小异 调用封装到NSNumber中的数据 -(char) charValue; -(int) intValue; -(float)floatValue; -(BOOL) boolValue; -(NSString etc Tip:高精度数据可以被低精度数据提取方法提取出来,NSNumber会对数据进行适当转换 NSValue可以包含任何值 NSValue是NSNumber的超类 NSValue可以放入NSArray和NSDictionary中 构造函数:+(NSValue 举例代码: 使用方法getValue来提取数值:需提供数值变量的地址,即&对象名 -(void) getValue : (void *) value; 举例代码: Tip:还记得吗,get开头的方法返回的是一个指针 Cocoa提供了将常用struct型数据转换为NSValue的方法: +(NSValue +(NSValue +(NSValue -(NSPoint) pointValue; -(NSSize) sizeValue; -(NSRect) rectValue; 举例代码:在NSArray中存储和检索NSRect NSNull空值对象 因为nil在集合中有特殊含义所以创造出来这个类来代替nil 获得一个NSNull空值方法+(NSNull 举例代码: (1)判断是否为空 (2)将空添加到集合中 |
Foundation框架中的数据类型
最新推荐文章于 2022-09-10 00:26:00 发布