1、常用函数:
NSRange(location, length): (没有发现返回-1)
赋值:
// 方法1 NSRange r = NSMakeRange(1, 2); // 创建NSRange结构体的函数NSMakeRange // 方法2 NSString *s = @"abc"; NSRange r = [s rangeOfString:@"o"]; // NSString中求字符范围的方法rangeOfString:NSPoint(x, y)/CGPoint(x, y):(开发中用CGPoint(因为跨平台)(iphone的坐标原点在左上角))
// 方法1 NSMakePoint(1, 1); // 方法2 CGPointMake(1, 2); // 最常用 CGPointZero; // 原点NSSize/CGSize:尺寸
// 方法1 NSMakeSize(1, 1); // 方法2 CGSizeMake(1, 1)NSRect/CGRect:矩形
CGRectMake(0 , 0, 10, 10); CGRectMake(CGPointZero, {10, 10});将以上结构体转成字符串函数:
NSStringFromRange NSStringFromPoint NSStringFromSize NSStringFromRect一些常用函数:(CG开头的一部分在CoreGraphics框架中)
CGPonitEqualToPonit CGRectEqualToRect CGSizeEqualToSize CGRectContainsPoint // 是否包含点2、常用类:
NSString *s1 = @"abc";/* 对象方法 */
/*************************************************************/ // 输入自定义参数转化成字符串 ,类似fprintf NSString *s2 = [[NSString alloc] initWithFormat:@"abc%d", 1]; /*************************************************************/ // C字符串转成OC字符串 NSString *s3 = [[NSString alloc] initWithUTF8String:"abc"]; // OC字符串转成C字符串 const char *cs = [s3 UTF8String]; /*************************************************************/ // 获取文件内容(NSUTF8StringEncoding,使用到中文可用的编码) NSString *s4 = [[NSString alloc] initWithContentsOfFile:@"/Users/triplec/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil]; /*************************************************************/ // 获取资源内容 // URL : 资源路径(万能) // 协议头://路径 // file:// // ftp:// // http:// // 有协议头 NSURL *url = [[NSString alloc] initWithString:@"file://Users/triplec/Desktop/1.txt"]; // 无协议头 NSURL *url2 = [NSURL fileURLWithPath:@"//Users/triplec/Desktop/1.txt"]; NSString *s5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];/* 类方法 */(与上面的对象方法对应)
NSString *s2 = [NSString stringWithFormat:@"abc%d", 1]; NSString *s3 = [NSString stringWithUTF8String:"abc"]; ...//每个对象方法名的init换成string(换成类名去除NS的小写) NSURL *url = [NSURL URLWithString:@"file://Users/triplec/Desktop/1.txt"];字符串操作
/* 将字符串写入文件 */ [@"abc" writeToFile:@"/Users/triplec/Desktop/1.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; /* 将字符串写如URL */ NSURL *url = [NSURL fileURLWithPath:@"//Users/triplec/Desktop/1.txt"]; [@"abc" writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:nil]; /* 将字符串以特定字符切割 (切割后为NSArray)*/ NSArray *array = [s3 componentsSeparatedByString:@"b"];NSMutableString类 :(NSMutableString,可变字符串)
NSMutableString *s1 = [NSMutableString stringWithFormat:@"abc"]; // 追加字符串 [s1 appendString:@"dfg"]; // 删除范围内的字符串 NSRange range = [s1 rangeOfString:@"b"]; [s1 deleteCharactersInRange:range];NSString也有相似的方法:(不可变性质体现)
NSString *s2 = [NSString stringWithFormat:@"abc"]; NSString *s3 = [s2 stringByAppendingString:@"dfg"]; // 在原来字符串的基础上创建新的字符串,而不是更改原先的字符串
NSArray *array1 = [NSArray arrayWithObject:@"abc"]; NSArray *array2 = [NSArray arrayWithObjects:@"abc", @"bcd", nil]; // nil表示数组元素结束标记 NSArray *array3 = @[@"abc", @"bcd"]; // 快速创建NSArray对象数组操作
array2.count; // 返回元素个数 array2[1]; // 和c数组一样可以根据下标来获取对应位置元素
遍历数组
//方法1 for (int i = 0; i < array2.count; i++) { NSLog(@"%@", array2[i]); } //方法2 for (id obj in array2) { NSUInteger idx = [array2 indexOfObject:obj]; NSLog(@"%@", obj); // 打印元素 if (1 == idx) { break; } } // (使用break退出循环) // 方法3 // 每遍历到一个元素就会调用一次block // 并且当前元素和索引位置会当做参数传给block [array enumerateObjectsUsingBlock: ^(id obj, NSUInteger idx, BOOL *stop) { NSLog(@"%ld-%@", idx, obj); // 打印索引和元素 if (1 == idx) { *stop = YES; } }]; // 使用stop停止 // 方法4 NSEnumerator *en = [array objectEnumerator]; // 迭代器 id obj = nil; while (obj = [en nextObject]) { NSLog(@"%@", obj); }NSMutableArray类:(可变数组)
NSMutableArray *array = [NSMutableArray array];可变数组操作
// 添加对象元素 [array addObject:@"abc"]; // 根据元素删除对应元素 [array removeObject:@"abc"]; // 删除所有对象元素 [array removeAllObjects]; //根据索引删除对象元素 [array removeObjectAtIndex:0];以下代码错误:
NSMutableArray *array = @[@"abc", @"bcd"]; // 右边返回不可变数组,不能赋给可变数组NSSet类:(无序,不可变)
//创建NSSet对象 NSSet *s = [NSSet setWithObjects:@"abc", @"bcd", nil]; // 随机拿出一个值 NSString *str = [s anyObject];NSMuTableSet类:(无序,可变)
NSMuTableSet *s = [NSMuTableSet set]; // 添加元素 [s addObject:@"abc"]; //删除元素 [s removeObject:@"abc"];NSSet和NSArray对比总结:
/* 字典: key --->value 索引--->文字内容 里面存储的东西都是键值对 不允许有相同的键,允许有相同的值 */ // 创建: NSDictionary *d = [NSDictionary dictionaryWithObject:@"school" forKey:@"place"]; // 获取: id obj = [d objectForKey:@"place"];因为NSDictionary不可变,所以可以通过数组添加多个key:
NSArray *keys = @[@"place", @"name"]; NSArray *objects = @[@"school", @"abc"]; NSDictionary *d = [NSDictionary dictionaryWithObjects:objects forKeys:keys]; // 或者 NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys: @"school", @"place", @"name", @"abc"];
快速操作
// 快速创建 NSDictionary *d = @{@"place" : @"school", @"name" : @"abc"}; // 快速访问 id obj = d[@"place"];返回键值对个数
d.countNSMutableDictionary类:(可变,无序)
// 创建: NSMutableDictionary *d = [NSMutableDictionary dictionary]; // 添加 [d setObject:@"school" forKey:@"place"]; // 移除 [d removeObjectforKey:@"place"];快速创建的基本都返回不可变,不能赋给可变的
字典的遍历
// 方法1 NSArray *keys = [d allKeys]; // 获取所有key for (int i = 0; i < d,count; i++) { NSLog(@"%@-%@", keys[i], d[keys[i]]); // 打印key和object } // 方法2 [d enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { NSLog(@"%@-%@", key, obj); // 打印key和object }]; //方法3 NSEnumerator *key = [d keyEnumerator]; // 迭代器 for (id obj in key ) { id value = [d objectForKey:obj]; NSLog(@"%@--%@", obj, value); }NSNumber类:
// 创建 NSNumber *num = [NSNumber numberWithInt:1]; // 转换1为NSNumber对象 // 操作 int a = [num intValue]; // 将num转换为int // 通过@将基本数据类型包装成一个NSNumber对象 @1; @1.1; @'A'; @YES; int a = 10; @(a);NSNumber之所以能包装基本数据类型为对象,是因为继承了NSValue
CGPoint p = CGPoint(1, 1); //将结构体转为value对象 NSValue *v = [NSValue valueWithPoint:p]; //将value转为对应的结构体 [v pointValue];NSDate类:
// 创建 NSDate *d = [NSDate date]; // 执行这行代码的时间(格林威治时间) NSDate *d2 = [NSDate dateWithTimeInterval:1 sinceDate:d]; // 比d晚5s NSTimeInterval s = [d1 timeIntervalSince1970]; // 从1970开始走过的秒数 // Date转成NSString NSDateFormatter *f = [[NSDateFormat alloc] init]; f.dateFormatter = @"yyyy-MM-dd HH:mm:ss"; NSString *s = [f stringFromDate:d]; // 将d转成yyyy-MM-dd HH:mm:ss格式的字符串 // NSString转成Date NNString *s = @"2015/03/08 13:27"; NSDateFormatter *f = [[NSDateFormatter alloc] init]; f.dateFormat = @"yyyy/MM/dd HH:mm"; NSDate *d = [f dateFromString:s]; // 将格式为yyyy/MM/dd HH:mm转换成d