黑马程序员——OC中的Foundation

来源:互联网 发布:卖家怎么玩好淘宝客 编辑:程序博客网 时间:2024/09/21 06:34
------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

Foundation—基础框架。框架中包含了很多开发中常用的数据类型,如结构体,枚举,类等,是其他ios框架的基础。

一.范围 NSRange

//NSRange的定义typedef struct _NSRange {    NSUIntegerlocation;    NSUIntegerlength;} NSRange;

//创建一个NSRangeNSMakeRange(NSUInteger loc, NSUInteger len)//判断一个点是否在里面BOOL NSLocationInRange(NSUInteger loc, NSRange range)//判断是否相等BOOL NSEqualRanges(NSRange range1, NSRange range2)

举例说明NSRange的用法
#import <Foundation/Foundation.h>int main(){    //定义一个range    NSRange range = NSMakeRange(0, 3);    //输出range的location和length    NSLog(@"%ld--%ld",range.location,range.length);        //查找某个字符串再另一个字符串的范围    NSString *str = @"just a demo";    //查找    NSRange range2 = [str rangeOfString:@"a"];    //输出    NSLog(@"%ld,%ld",range2.location,range2.length);        return 0;}

二.点 NSPoint和CGPoint


struct CGPoint {  CGFloat x;  CGFloat y;};typedef struct CGPoint CGPoint;

举例说明使用
 //NSPoint和CGPoint的创建类似 NSPoint point =NSMakePoint(10, 10);    CGPoint point2 = CGPointMake(12, 12);    //注意 x 和 y 是 double 类型    NSLog(@"%f,%f",point.x,point.y);    NSLog(@"%f,%f",point2.x,point2.y);//判断两点是否相等 BOOL b = CGPointEqualToPoint(point, point2);    NSLog(@"%d",b);

三.尺寸 NSSize和CGSize


struct CGSize {  CGFloat width;  CGFloat height;};

举例说明使用

 <span style="font-weight: normal;">   //创建 size    NSSize size =NSMakeSize(10, 12);    CGSize size2 = CGSizeMake(11, 10);    //打印 size    NSLog(@"%@",NSStringFromSize(size2));    NSLog(@"%f,%f",size.width,size.height);</span>


四.矩形 NSRect和CGRect


struct CGRect {  CGPoint origin;  CGSize size;};typedef struct CGRect CGRect;

常用方法举例
    //创建 CGRect 和 NSRect    NSRect rect = NSMakeRect(0, 0, 10, 10);    CGRect rect2 = CGRectMake(0, 0, 5, 5);        //判断两个 rect 是否相同    BOOL b = CGRectEqualToRect(rect, rect2);    //判断一个 rect 是否包含另一个 rect    BOOL b2 = CGRectContainsRect(rect, rect2);    //判断点是否在 rect 内    BOOL b3 = CGRectContainsPoint(rect2, NSMakePoint(5, 5));        //打印判断结果    NSLog(@"%d,%d,%d",b,b2,b3);


五.字符串 NSString和NSMutableString

1.NSString
    //快速创建    NSString *str = @"this is just a demo";    //格式化创建    int a=2;    NSString *str2 = [[NSString alloc]initWithFormat:@"this is a demo%d",a ];        NSString *str3= [[NSString alloc]initWithUTF8String:"just a demo"];        //从文件中加载    NSString *str4 = [[NSString alloc]initWithContentsOfFile:@"/Users/shmily/Desktop/1.txt" encoding:NSUTF8StringEncoding error:nil];        //从 url 中加载    NSURL *url = [NSURL URLWithString:@"file:///Users/shmily/Desktop/1.txt"];    NSString *str5 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];        NSLog(@"%@\n%@\n%@\n%@\n%@",str,str2,str3,str4,str5);

2.NSMutableString

NSMutableStirng继承自NSString,所以NSString有的方法,NSMutableString都有,唯一不同的是,NSMutableString是可变字符串,当初始化完成后可以继续修改改字符串的内容,NSString是不可变字符串,一旦初始化完成,就不能再修改其内部的值.

使用举例
    NSMutableString *s1 = [NSMutableString stringWithFormat:@"my age is 10"];    // 拼接内容到s1的后面    [s1 appendString:@" 11 12"];        // 获取is的范围    NSRange range = [s1 rangeOfString:@"is"];    [s1 deleteCharactersInRange:range];    NSString *s2 = [NSString stringWithFormat:@"age is 10"];    //添加字符串到指定已有字符串    NSString *s3 = [s2 stringByAppendingString:@" 11 12"];         NSLog(@"s1=%@, s2=%@", s1, s2);


六.NSArray 和NSMutableArray


1.NSArray

不可变对象数组的使用
    //NSArray的创建    NSArray *array1 = [NSArray arrayWithObject:@"jack"];    // nil是数组元素结束的标记    NSArray *array2 = [NSArray arrayWithObjects:@"jack", @"rose", nil];          //快速创建一个NSArray对象    NSArray *array4 = @[@"jack", @"rose", @"4324324"];    //NSArray的元素个数    NSLog(@"%ld", array3.count);    //NSArray中元素的访问    NSLog(@"%@", [array3 objectAtIndex:1]);    //快速访问    NSLog(@"%@", array3[0]);}

2.NSMutableArray

可变对象数组的使用
    // @[] 只创建不可变数组NSArray    // 常见错误写法    NSMutableArray *array = @[@"jack", @"rose"];   [array addObject:@"jim"];//因为快速创建的NSArrray是不可变的    // 可变数组的基本使用    NSMutableArray *array = [NSMutableArray arrayWithObjects:@"rose", @"jim", nil];         // 添加元素    [array addObject:[[Person alloc] init]];      [array addObject:@"jack"];       // 删除元素    [array removeAllObjects];    // 删除指定的对象    [array removeObject:@"jack"];    [array removeObjectAtIndex:0];    // 错误写法    // [array addObject:nil]; //nil是NSArray的结束标志

七.NSDictionary和NSMutableDictionary

1.NSDictionary

//字典的定义//NSDictionary定义一个键值对NSDictionary *dict = [NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];//NSDictionary定义多个键值对NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:     @"jack", @"name",     @"北京", @"address",     @"32423434", @"qq", nil];//快速定义字典(只能用于不可变字典)NSDictionary *dict = @{@"name" : @"jack", @"address" : @"北京"};//字典的键值对获取id obj = dict[@"name"];

2.NSMutableDictionary

 NSMutableDictionary *dict = [NSMutableDictionary dictionary];// 添加键值对[dict setObject:@"jack" forKey:@"name"]; [dict setObject:@"北京" forKey:@"address"];// 移除键值对[dict removeObjectForKey:(id)];// 字典不允许有相同的key,但允许有相同的value(Object)    // 字典的无序的    NSDictionary *dict = @{    @"address" : @"北京",    @"name" : @"jack",    @"name2" : @"jack",    @"name3" : @"jack",    @"qq" : @"7657567765"};//打印所有的字典的键值对[dict enumerateKeysAndObjectsUsingBlock:     ^(id key, id obj, BOOL *stop) {         NSLog(@"%@ - %@", key, obj);                  // *stop = YES;     }];


八.NSNumber

1.将各种基本数据类型包装成NSNumber对象.

// 将age变量包装成NSNumber对象    int age = 100;    @(age);    //[NSNumber numberWithInt:age];//将基本数据类型包装成NSNumber对象NSNumber *num = [NSNumber numberWithInt:10]; NSNumber *n = [NSNumber numberWithDouble:10.5];


2.将NSNumber对象转化成基本数据类型

//将NSNumber对象转为基本数据类型//转为intint a = [number intValue];//转为doubledouble d = [number doubleValue];


3.将基本数据类型快速包装成NSNumber对象
 <span style="font-weight: normal;">// 将各种基本数据类型包装成NSNumber对象    @10.5;    @YES;    @'A'; // NSNumber对象        //注意@'A'和@"A"的区别    @"A"; // NSString对象</span>


九.NSDate

1.创建一个NSDate对象
 <span style="font-weight: normal;">// 创建一个时间对象 NSDate *date = [NSDate date]; // 打印出的时候是0时区的时间(北京-东8区) NSLog(@"%@", date);    NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date]; // 从1970开始走过的秒数    NSTimeInterval seconds = [date2 timeIntervalSince1970];</span>

2.日期格式化
<span style="font-weight: normal;">//日期格式化NSDate *date = [NSDate date];       // 日期格式化类NSDateFormatter *formatter = [[NSDateFormatter alloc] init];    // y 年  M 月  d 日// m 分 s 秒  H (24)时  h(12)时formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";//将date转化为formatter对应格式的字符串 NSString *str = [formatter stringFromDate:date];</span>

3.将制定格式的字符串转为date对象
<span style="font-weight: normal;">// 09/10/2011NSString *time = @"2011/09/10 18:56";//实现一个 NSDateFormatter NSDateFormatter *formatter = [[NSDateFormatter alloc] init];//设置日期格式formatter.dateFormat = @"yyyy/MM/dd HH:mm";//根据设置的日期格式将字符串转为日期NSDate *date = [formatter dateFromString:time];</span>


十.NSValue


之前说过的NSNumber实际上是NSValue的一种特殊形式.
NSValue可以将基本数据类型包装成OC对象.比如:
CGPoint p = CGPointMake(10, 10);// 将结构体转为Value对象NSValue *value = [NSValue valueWithPoint:p];

我们可以看出,实际上使用NSValue转化的方法的命名格式为
NSValue *value = [NSValue valueWith + 对应的数据类型(int,point,rect等)];

将NSValue转化为基本数据类型的方式和NSNumber相似,可以总结为
基本数据类型 变量名 = [NSValue对象 基本数据类型 + Value];

0 0
原创粉丝点击