OC语言-07-OC语言-Foundation框架

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

结构体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)将一个字符串

转换成rangeNSPoint/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),将字符串转换

成尺寸元素aSizeNSRect/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字符串对象是不可变 的

通常情况下,一个类方法对应一个完成相同功能的对象方 法

可以通过@""快速创建字符串 (可以通过 at ""快速创建字符串),返回不可变字符 串

常用创建字符串的的类方法(通常以类名开头 )

+ (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,将字符串写到以字符串形式表示路径的文件中集合NSArray/NSMutableArray

OC数组,数组对象为任何OC对象,非OC对象必须转化成相应的OC

对象

数组元素不能为nil,nil是OC数组结束的标志

可以通过@[]快速,返回不可变数组

常用的创建数组类方法

+ (instancetype)array,创建一个空的数组对象

+ (instancetype)arrayWithObject:(id)anObject,通过OC对象来创建数组

+ (NSArray)arrayWithContentsOfFile:(NSString)path通过文件内容创建数组

+ (NSArray)arrayWithContentsOfURL:(NSURL)url,通过统一资源定位符URL创建数组

常用的创建数组对象方法

对象方法与类方法相似,以init开头

常用的数组操作函数

- (NSUInteger)indexOfObject:(id)anObject,找到指定对象的索引

- (BOOL)isEqualToArray:(NSArray *)otherArray,判断两个数组中的元素是否相同

- (NSArray *)sortedArrayUsingSelector:(SEL)comparator通过SEL调用方法,来对数组排序

- (NSArray *)subarrayWithRange:(NSRange)range,返回数组中子数组的范围

- (void)enumerateObjectsUsingBlock:(void (^)(id obj, NSUInteger idx, BOOL *stop))block,枚举数组中的元素并调用block,通常用于遍历一个数组NSMutableArray继承自NSArray,创建可变数组

NSMutableArray扩充的方法

- (void)addObject:(id)anObject,给数组添加一个OC对象

- (void)insertObject:(id)anObject atIndex:(NSUInteger)index在指定索引位置插入一个OC对象

- (void)removeObjectAtIndex:(NSUInteger)index,删除某个索引位置的对象

- (void)removeAllObjects,删除所有的数组元素

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject,用指定对象替换指定索引位置的对象

- (void)removeObject:(id)anObject inRange:(NSRange)range,删除某个范围的对象NSSet/NSMutableSet

NSSet,无序数组,不可变

NSMutableSet,无序数组,可变

NSDictionary/NSMutableDictionary

NSDictionary,不可变字典类

元素为Object:key键值对,key值必须唯一,键值对无序

常用的创建字典对象的方法

+ (instancetype)dictionaryWithObject:(id)object forKey:(id < NSCopying >)key,通过键值对创建字典

- (instancetype)initWithObjects:(const id [])objects forKeys:(const id [])keys count:(NSUInteger)cnt,通过objects数组和keys数组创建字典

+ (instancetype)dictionaryWithObjectsAndKeys:(id)firstObject, ...通过多个键值对创建数组

常用的字典操作函数

- (BOOL)isEqualToDictionary:(NSDictionary *)otherDictionary判断两个字典是否相等

- (NSArray)objectsForKeys:(NSArray)keys notFoundMarker:(id)marker,通过一个键值数组返回一个对象数组

- (void)enumerateKeysAndObjectsUsingBlock:(void (^)(id key,id obj, BOOL *stop))block 通过block来遍历字典

- (void)removeObjectForKey:(id)aKey,删除指定键值的对象

- (void)removeAllObjects,删除所有的对象NSNumber与NSValueNSValue

OC类,用于封装普通类型数据

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;

}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航