您的位置:首页 > 移动开发 > IOS开发

Foundation框架的简单介绍

2015-11-17 15:25 519 查看

结构体

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:
4000
(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与NSValue

NSValue

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS Foundation框架