OC学习相关第二发之Foundation框架相关——常用数据类型
(好几天没跟大家见了,这几天忙着总结和学习新的知识呢)
一NSRange
- NSRange 结构体用来表示相关事物的范围。比字符串里字符的位置信息或者数组里数组元素的范围.
- 其中,location表示范围的位置信息,从0开始计数;length表示范围所含元素的个数。如字符串@”Hello,QingYun”中,单词“Qing”,可以用location为6,length为4来表示。
- 创建时候用NSMakeRange
一NSPoint
- 代表笛卡尔平面的坐标点(x,y)
- 创建时候用NSMakePoint
一NSSize
- 用来存储长度和宽度
- 创建时候用NSMakeSize
一NSRect
- 由点和大小符合而成的矩形数据类型
- 创建时候用NSMakeRect
一NSSting 和 NSMutableSting(字符串)
NSSting
- 在OC中字符串是一个类
- 通过(BOOL) isEqualToSting:(NSSting *) aSting;
- 字符串比较第二种方法
- `-( NSComparisonResult ) compare: (NSString *) string;其返回 值NSOrderedAscending=-1,NSOrderedSame,NSOrderedDescending
- 判断字符串是否以另一个字符串开头
- (BOOL) hasPrefix: (NSString *) aString;
*判断字符串是否以另一个字符
- (BOOL) hasSuffix: (NSString *) aString;
- (NSRange) rangeOfString: (NSString *) aString;`
2 . NSMutableSting
- 创建指定大小的
NSMutableString + (id) stringWithCapacity: (unsigned) capacity;
//字符串大小并不仅限于所提供的值,这个指定的容量是个最优值 - 在字符串后面追加字符串
- (void) appendString: (NSString *) aString;
- 在字符串后面以格式符的方式追加字符串
- (void) appendFormat: (NSString *) format ,...;
- 插入字符串
[muStr insertString:@"zhao" atIndex:3];
- 替换指定区域的字符串
[muStr replaceCharactersInRange:range withString:@"wangwu"]
- 删除指定区域的字符串 [muStr deleteCharactersInRange:range];
一NSArray 和 NSMutableArray(集合相关)
NSArray
- 与C语言相比,Foundation的数组优点
- 不需要检查索引是否有效;
- 长度不需要硬编码
- NSArray 是一个Cocoa类,用来存储对象的有序列表
- 只能存储Objective-C的对象,不能存储C语言中的基本数据类型,如int 、float 、enum、struct不能在NSArray中存储nil
- 创建数组:通过类方法arrayWithObjects: 参数是以逗号分隔的对象列表,列表的结尾添加nil代表列表结束。
[NSArray arrayWithObjects:@"zhangsan",@"lisi",@"wangwu",nil];
- 计算数组的个数:
NSUInteger count1 = [arr count];
- 遍历数组方法 :
[array objectAtIndex:i];或者是 arr[i]
- 查找数组某个元素所在的下标 :
[arr indexOfObject:@"lisi"];
- 查找第一个元素:[array firstObject]; 查找最后一个元素:[array lastObject];
- 数组新命名法:
NSArray *newArr = @[@"zhaoliu",@"tianqi"];
- 以某个特定的字符截取作为数组:
[strPersons componentsSeparatedByString:@":"];
NSMutableArray
- 创建新的可变数组
(NSMutableArray)+ (id) arrayWithCapacity: (unsigned) numItems;
- 在数组末尾添加新的对象
- (void) addObject: (id) anObject;
- 删除数组指定索引位置的对象
- (void) removeObjectAtIndex: (unsigned) index;
- 用枚举对象遍历数组 :
NSEnumerator *indicator = [mArray objectEnumerator];
NSString *name;
while (name = [indicator nextObject]) {
NSLog(@"NAME:%@",name);
}
- 用for in快速遍历
for (NSString *name1 in arr)
{
NSLog(@"%@",name1);
}
一NSDiction 和 NSMutableDictionary(集合相关)
NSDiction
- NSDictionary(字典)就是关键字及其定义的集合,又叫做散列表或者关联数组。用的是键查询优化存储方式,查找速度快。
- 根据key值从字典获取对象的方法 [myDic objectForKey:@”num2”];
- 创建NSDictionary对象的方法。
NSDictionary *myDic = [NSDictionary dictionaryWithObjectsAndKeys:@"zhangsan",@"num1",@"lisi",@"num2",nil];
或者用NSDictionary *myDic1 = @{@"num1":@"wangwu",@"num2":@"tianqi"};
NSMutableDictionary
- 创建NSMutableDictionary对象NSMutableDictionary *mDic = [NSMutableDictionary dictionaryWithCapacity:3];
- 新语法:mDic[@”num7”] = @”xiaomengli”;
- 向可变字典添加对象内容[mDic setObject:@”mengli” forKey:@”num7”];
- 从可变字典对象删除内容[myDic2 removeObjectForKey:@”num2”];
- 由于在Cocoa中,许多类实际上是一群隐藏在通用接口之下的与实现相关的类(我们称为类簇),如创建NSString对象的时候,实际上获得的可能是NSLiteralString 、NSCFString 、NSSimpleCString、NSBallOfString或者其它未写入文档的与实现相关的对象。所以我们不要试图去创建NSString NSArray NSDictionary类的子类。