结构体
-
NSRange/CGRange
- 用来表示一个元素在另一个元素中的范围,NSRange等价于CGRange
-
包含两个属性:
- NSUInteger location:表示一个元素在另一个元素中的位置
- NSUInteger length:表示该元素的长度
- 若找不到指定的元素,将返回NSNotFound(整型-1)
-
常用函数
- NSRange NSMakeRange(NSUInteger loc, NSUInteger len)
创建一个NSRange类型的变量,将其两个属性初始化为loc和len
并返回创建好的变量 - BOOL NSLocationInRange(NSUInteger loc, NSRange range)
查看某个位置是否在某个范围内,返回一个BOOL类型数据 - BOOL NSEqualRanges(NSRange range1, NSRange range2)
判断两个范围是否相等,当range1.location = range2.location
且range1.length = range2.length时才相等 - NSString *NSStringFromRange(NSRange range)将一个range
转换成字符串 - NSRange NSStringFromRange(NSString *string)将一个字符串
转换成range
-
NSPoint/CGPoint
- 用来存储一个点,NSPoint等价于CGPoint
-
包含两个属性:
- CGFloat x:表示该点的横坐标值
- CGFloat y:表示该点的纵坐标值
-
常用函数
- NSPoint NSMakePoint(CGFloat x, CGFloat y),用来创建一
个点,并用x与y初始化成员变量 - BOOL NSEqualPoints(NSPoint aPoint, NSPoint bPoint)
判断aPoint与bPoint是否为同一个点 - BOOL NSPointInRect(NSPoint aPoint, NSRect aRect)判断点
aPoint是否在矩形aRect中 - NSString *NSStringFromPoint(NSPoint aPoint),将一个点
转化为字符串 - NSPoint NSPointFromString(NSString *aString),将一个字
符串转化成一个点
-
NSSize/CGSize
- 用来存储一个元素的尺寸,NSSize等价于CGSize
-
包含两个属性:
- CGFloat width:表示该元素的宽度
- CGFloat height:表示该元素的高度
-
常用函数
- NSSize NSMakeSize(CGFloat w, CGFloat h),用来创建一个
NSSize元素,并用x和y初始化成员变量 - BOOL NSEqualSizes(NSSize aSize, NSSize bSize),判断尺
寸aSize与尺寸bSize是否相等 - NSString *NSStringFromSize(NSSize aSize),将尺寸元素aSize
转换成字符串 - NSSize NSSizeFromString(NSString *aString),将字符串转换
成尺寸元素aSize
-
NSRect/CGRect
- 用来存储一个元素左上角的点和该元素的尺寸信息, NSRecta
等价于CGRect -
包含两个属性:
- CGPoint origin:用来表示该元素左上角的点
- CGSize size:用来表示该元素的尺寸
-
常用函数
- CGRect CGRectMake(CGFloat x, CGFloat y, CGFloat width,
CGFloat height),用来创建一个CGRect变量,并用x和y初始化
成员变量origin,用width和height初始化成员变量size - bool CGRectEqualToRect(CGRect rect1, CGRect rect2),
比较两个rect1与rect2是否相等 - bool CGRectContainsPoint(CGRect rect, CGPoint point),
判断点point是否在元素rect中 - bool CGRectContainsRect(CGRect rect1, CGRect rect2),
判断元素rect1是否包含rect2,rect1与rect2不为空,不包括边界
-
示例
#import <Foundation/Foundation.h> int main() { @autoreleasepool { BOOL result; //用于存储函数的返回值 NSString *str; //用于存储转化得到的字符串 //创建两个点对象 NSPoint point = NSMakePoint(5, 8); NSPoint point2 = NSMakePoint(50, 8); //创建两个尺寸对象 NSSize size = NSMakeSize(10, 20); NSSize size2 = NSMakeSize(10, 20); //创建两个矩形对象 NSRect rect = NSMakeRect(0, 0, 20, 30); NSRect rect2 = NSMakeRect(0, 1, 20, 30); //判断point与point2是否相同 result = NSEqualPoints(point, point2); //判断point是否在某个矩形rect result = NSPointInRect(point, rect); //判断point2是否在某个矩形rect result = NSPointInRect(point2, rect); //判断size与size2是否相同 result = NSEqualSizes(size, size2); //判断rect与rect2是否相同 result = NSEqualRects(rect, rect2); //判断rect是否包含rect2 result = CGRectContainsRect(rect, rect2); //将point、size、rect转化成字符串 str = NSStringFromPoint(point); str = NSStringFromSize(size); str = NSStringFromRect(rect); } return 0; }
字符串
-
NSString
- 是一个OC类,用于操作OC字符 串
- 创建的OC字符串对象是不可变 的
- 通常情况下,一个类方法对应一个完成相同功能的对象方 法
- ,返回不可变字符 串
-
常用创建字符串的的类方法(通常以类名开头 )
- + (instancetype)string,创建一个NSString对象
- + (instancetype)stringWithString:(NSString *)string,创建一个NSString对象,并用OC字符串String初始 化
- + (instancetype)stringWithCharacters:(const unichar *)character slength:(NSUInteger)length,通过字符串指针以及一定长度的字符串创建一个NSString对 象
- + (instancetype)stringWithFormat:(NSString *)format ,合成一个字符串
- + (instancetype)stringWithCString:(const char *)cStringencoding:(NSStringEncoding)enc,通过一个C语言字符串创建一个OC字符 串
- + (instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error, 通过统一资源定位符URL创建OC字符 串
- + (instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;通过文件内容创建OC字符串
-
常用创建字符串的对象方法
- 对象方法与类方法相似,通常以init开头,这里不在列举
-
常用的字符串操作方法
- - (unichar)characterAtIndex:(NSUInteger)index,返回字符串中指定索引位置的字符
- - (void)getCharacters:(unichar *)buffer range:(NSRange), aRange,找到指定位置的字符串,存储到buffer 中
- - (void)getCharacters:(unichar *)buffer,获取buffer中的字符串
- - (NSString *)substringWithRange:(NSRange)range,返回某个范围的子串
- - (NSComparisonResult)compare:(NSString *)string,比较两个字符串,返回枚举NSComparisonResult的变量
- - (BOOL)containsString:(NSString *)aString,判断是否包含字符串aString
- - (NSRange)rangeOfString:(NSString *)aString,返回该字符串中aString的范围
-
NSMutableString
- 继承自NSString,创建可变的字符串对象
-
NSMutableString扩充的方法
- - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString,用aString替换指定范围的字符串
- - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc,在索引loc处插入字符串aString
- - (void)deleteCharactersInRange:(NSRange)range,删除指定范围的字符串
- - (void)appendString:(NSString *)aString,将aString拼接在该字符串的末尾,扩充字符串
- - (void)appendFormat:(NSString *)format,通过一个和成的子符串format来扩充字符串
- - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile,将字符串写到以字符串形式表示路径的文件中
集合
NSNumber与NSValue
-
NSValue
-
NSNumber
- 继承自NSValue,通常用于将普通数据类型如int、char等,转换为相应的OC对象
-
常用的初始化类方法
- + (NSNumber *)numberWithChar:(char)value,将char类型转换成OC对象
- 其他的方法与上述方法类似,只需将char换成其他类型名,如:int,long等
-
常用的初始化对象方法
- - (NSNumber *)initWithInt:(int)value,将int类型数据转换为OC对象
- 其他方法与上述方法相似,只需将Int换成相应的数据类型,如char,short等
-
常用操作NSNumber对象的方法
- - (NSComparisonResult)compare:(NSNumber *)otherNumber比较两个NSNumber对象,返回枚举类型
- - (BOOL)isEqualToNumber:(NSNumber *)number,比较两个NSNumber对象,返回BOOL类型
NSDate
-
作用
- OC类,用于存储时间信息
- 可以通过NSDateFormatter指定时间的格式
-
常用的方法
- - (instancetype)initWithTimeIntervalSinceReferenceDate:(NSTimeInterval)ti, 创建一个时间对象,用ti初始化,NSTimeInterval本质是long类型
- - (NSTimeInterval)timeIntervalSinceDate:(NSDate *)anotherDate, 返回自某个时间其到代码调用所经过的秒数
- - (NSComparisonResult)compare:(NSDate *)other,比较两个日期,返回枚举类型
- - (BOOL)isEqualToDate:(NSDate *)otherDate,比较两个日期是否相等
- /timeIntervalSince1970是一个成员变量,可以通过它调用get方法返回从1970年起经历的时间(单位为:秒)
- + (instancetype)date,返回当前的0时区时间
示例
#import <Foundation/Foundation.h> int main() { @autoreleasepool { //定义一个NSDate类型,用于输出程序执行时的时间 NSDate *date = [NSDate date]; //指定时间的格式 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy年/MM月/dd日/ HH:mm:ss"; //将时间类型转换为字符串 NSString *time = [formatter stringFromDate:date]; NSLog(@"%@", time); //定义一个范围,用于指定某个范围的字符串 NSRange range = NSMakeRange(5, 4); //快速创建一个NSString对象,存储姓名 NSString *str = @"name:Jack"; //创建一个NSNumber对象,存储学号 NSNumber *number = [NSNumber numberWithInt:1]; //创建一个不可变数组,存储多个姓名对象 NSArray *objects = @[str, @"name:Lily", @"name:Lucy"]; //创建一个可变数组,存储多个学号对象 NSMutableArray *keys = [NSMutableArray arrayWithObjects:number, @2, @3, nil]; //创建一个可变字典,通过数组objects,keys初始化 NSMutableDictionary *dictionary = [[NSMutableDictionary alloc] initWithObjects:objects forKeys:keys]; //快速遍历objects数组 for (id obj in objects) { //找到obj中指定范围的子串 NSString *name = [obj substringWithRange:range]; NSLog(@"%@", name); } //通过block遍历字典中的元素 [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ NSLog(@"%@-%@", key, [obj substringWithRange:range]); if ([[obj substringWithRange:range] isEqualTo:@"Jack"]) { //当遍历到Jack时停止 *stop = YES; } }]; //清除key值为@1的键值对 [dictionary removeObjectForKey:@1]; //检测结果,此时将遍历字典中所有的元素,不会停止 [dictionary enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop){ NSLog(@"%@-%@", key, [obj substringWithRange:range]); if ([[obj substringWithRange:range] isEqualTo:@"Jack"]) { //当遍历到Jack时停止(字典中无该键值对,不会停止) *stop = YES; } }]; } return 0; }