黑马程序员技术交流社区

标题: Foundation框架自己总结的知识点 [打印本页]

作者: vvvisa    时间: 2016-4-2 21:41
标题: Foundation框架自己总结的知识点
手打不易,如有不足还请指教

/**************Foundation框架****************/


//结构体
* NSRange:
    1>NSRange r = NSMakeRange(2,4);
      NSRange r2 = {.location = 2,.length = 4};
    2>rangeOfString:查找某个字符串在另一个字符串中的位置
        NSString *str = @"I love OC";
        NSRange range = [str rangeOfString:@" lov"];
            如果找不到的话,.location = NSNotFound = -1,.length = 0;

*CGPoint\NSPoint:表示平面中的一个坐标
    1>接受两个double参数
        CGPoint p = CGPointMake(0,0);
        NSPoint p2 = NSMakePoint(0,0);

*CGSize\NSSize:表示UI元素的尺寸
    1>接受两个double参数
        CGSize s = CGSizeMake(100,50);
        NSSize s2 = NSMakeSize(100,50);

*CGRect\NSRect:表示一个UI元素的位置和尺寸,相当于CGPoint和CGSize
    1>CGRect r = CGRectMake(0,0,100,50);
      CGRect r2 = {CGPointZero,CGSizeMake(100,50)};

*CGPointZero:表示原点
    1>CGSizeZero
    2>CGRectZero
    3>这些都包含在CoreGraphics框架中

*NSStringFromPoint
    1>将这个结构体转化为字符串
        NSString *str = NSStringFromPoint(CGPointMake(0,0));
    2>NSStringFromSize
      NSStringFromRect

*CGPointEqualToPoint:对比两个点是否相同
    1>返回一个BOOL类型
        BOOL b = CGPointEqualToPoint(CGPointZero,CGPointMake(0,0));

*CGRectContainsPoint:判断一个点是不是在某个矩形范围内
    1>返回BOOL类型
        BOOL b = CGRectContainsPoint(CGRectMake(50,40,100,100),CGPointMake(60,40));


//常用类

*NSString
    1>字符串的创建:
        NSString *str = @"visa";
        NSString *str2 = [[NSString alloc] initWithString:@"visa"];
        每一个对象方法一般都有一个类方法与之对应

    2>拼串:
        <1>NSString *str = [NSString stringWithFormat:@"age is %d",10];
        <2>也可用作将基本数据类型转为一个字符串:
            NSString *str = [NSString stringWithFormat:@"%d",10];
    3>OC字符串和C字符串的转换
        <1>NSString *s = [NSString stringWithUTF8String:"visa"];
        <2>const char *c = [@"visa" UTF8String];

    4>将字符串转为URL:
        <1>NSURL *url = [NSURL URLWithString:@"file:///Users/visa/Desktop/abc.txt"];
                    //   file://是协议头
        <2>NSURL *url2 = [NSURL fileURLWithPath:@"/Users/visa/Desktop/abc.txt"];


    5>将URL中的所有内容转为字符串
        <1>NSString *str = [NSString stringWithContentsOfFile:@"/Users/visa/Desktop/abc.txt" encoding:NSUTF8StringEncoding error:nil];
                        NSUTF8StringEncoding:用到中文时就要使用这种编码

    6>将字符串写入URL
        <1>[@"visa" writeToFile:@"/Users/visa/Desktop/abc.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
                    automically:原子性操作,如果是YES,那么文件写入过程中如果写入失败,文件就不会被创建
                    相应的,也会有writeToURL这个方法

    7>characterAtIndex
        <1>取出这个位置对应的字符,是个对象方法
        <2>返回值是unichar类型
                unichar c = [@"visa" characterAtIndex:2];

    8>componentsSeparatedByString:
        <1>用字符串来分割另一段字符串
        <2>返回一个NSArray数组
            NSArray array = [str componentsSeparatedByString:@"\n"];

    9>替换字符串:
        NSString *str2 = [str stringByReplacingCharactersInRange:NSMakeRange(4,53) withString:@"abc"];

*NSMutableString  NSString的子类

    1>不可变字符串
        不能这样创建   NSMutableString *str = @"visa"

    2>拼接一个字符串拼接到某个字符串的后面
        NSMutableString *str = [str stringWithFormat:@"age is 10"];
        [str appendString:@" 11 12"];

        NSString *s = @"visa";
        NSString *s2 = [s stringByAppendingString:@"wz"];

    3>删除一段:
        NSMutableString *s = [s stringWithFormat:@"age is 10"];
        NSRange range = [s rangeOfString:@"is"];
        [s deleteCharactersInRange:range];
作者: vvvisa    时间: 2016-4-2 21:42

//集合类

*NSArray
    1>不可变数组

    2>只能存放OC对象,不能存放基本数据类型,如int,double,struct,enum等

    3>不能存放nil,因为nil是NSArray数组结束的标志

    4>NSArray的创建:
        NSArray *array = [NSArray arrayWithObject:@"visa"];
        NSArray *array2 = [NSArray arrayWithObjects:@"visa",@"jack",[[Person alloc] init],nil];

    5>快速创建一个NSArray对象:
        NSArray *array = @[@"visa",@"jack",@"rose"];
            <1>@[]这是一种编译器的特性
            <2>@[]只能创建NSArray,不能创建NSMutableArray
    6>NSArray的元素个数
        NSLog(@"%ld",array.count);

    7>NSArray的元素访问
        <1>NSLog(@"%@",[array objectAtIndex:1]);
        <2>NSLog(@"%@",array[1]);

    8>找出某元素在数组中的位置:
        [array indexOfArray:@"visa"];

    9>遍历数组
        <1>for(id obj in array)
            {
                NSUInteger i =[array indexOfArray:obj];
                NSLog(@"%ld ---%@",i,obj);
            }

            id obj 代表着数组中的每一个元素
        <2>[array enumerateObjectsUsingBlock:
            ^(id obj, NSUInteger idx, BOOL *stop)
            {
                NSLog(@"%ld-----%@",idx,obj);
            }]
                    定义一个BOOL类型的指针是因为block中是值传递,不能修改参数的数值,只好传一个地址,通过指针来间接操作

*NSMutableArray  NSArray的子类

    1>不可变数组
        NSMutableArray *array = [NSMutableArray arrayWithObjects:@"visa",@"jack",@"rose",@"visa",nil];

    2>添加元素
        [array addObject:[[Person alloc] init]];

    3>删除元素
        <1>[array removeAllObjects];
        <2>[array removeObject:@"jack"];
        <3>[array removeObjectAtIndex:1];
        <4>[array removeObject:@"visa" inRange:NSMakeRange(3,1)];   在range范围内查找特定元素进行删除
        <5>[array removeObjectsInRange:NSMakeRange(1,3)];

*NSSet

    1>和NSArray基本一样,但是元素的排列没有顺序

    2>创建NSSet
        NSSet *s = [NSSet setWithObjects:@"visa",@"jack",@"rose",nil];

    3>元素的取用(只能随机拿出元素)
        NSString *str = [s anyObject];

    4>因为没有顺序,所以没有.conut

*NSMutableSet  NSSet的子类

    1>创建
        NSMutableSet *s = [NSMutableSet setWithObjects:@"visa",@"jack",@"rose",nil];

    2>添加元素
        [s addObject:@"123"];

    3>删除元素
        [s removeObject:@"visa"];

*NSDictionary

    1>存储的是键值对:
        key ------> value
      注意:是无序的

    2>创建
        <1>NSArray *keys = @[@"name",@"address",@"qq"];
           NSArray *objects = @[@"visa",@"太原",@"12345"];
           NSDictionary *dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
        <2>NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                                 @"visa",@"name",
                                 @"太原",@"address",
                                 @"12345",@"qq",nil];
        <3>快速创建
            NSDictionary *dict = @{@"name":@"visa",
                                 @"address":@"太原",
                                 @"qq":@"12345"};

    3>按键寻值
        <1>id obj = [dict objectForKey:@"address"];
        <2>id obj = dict[@"address"];

    4>dict.count返回的是键值对的个数

    5>遍历
        <1>NSArray *keys = [dict allKeys];
           for(int i = 0;i < keys.count;i++)
           {
               NSString *key = keys[i];
               NSString *value = dict[key];
               
               NSLog(@"%@ ---- %@",key,value);
           }
        <2>[dict enumerateKeysAndObjectsUsingBlock:
            ^(id key,id obj,BOOL *stop){
                NSLog(@"%@ ---- %@",key,obj);
            }];

*NSMutableDictionary  NSDictionary的子类

    1>创建
        NSMutableDictionary *dict = [NSMutableDictionary dictionary];

    2>添加键值对
        [dict setObject:@"visa" forKeys:@"name"];
    3>移除键值对
        [dict removeObjectForKey:@"name"];

*NSFileManager

    1>单例对象,整个程序运行期间这个类的对象只有一个,所以所有方法调用的对象都是这个对象
        获得文件管理者:
            NSFileManager *mgr = [NSFileManager defaultManager];

    2>取出文件拓展名:(忽略大小写)
        NSString *path = @"/Users/visa/Desktop/.txt";
        NSString *extension = [[path pathExtension] lowercaseString];
    3>用数组存储当前文件夹内的所有内容:
        NSArray *array = [mgr contentsOfDirectoryAtPath:path error:nil];

*NSNmuber

    1>将一个基本数据类型转换为一个OC对象
        NSNmuber *num = [NSNmuber numberWithInt:10];
        int a = [num intValue];
        int b = [@"20" intValue];

    2>快速转换:
        @10;
        @10.5;
        @"a"  是NSString对象
        @'a'  是NSNmuber对象

        int age = 10;
        @(age);

*NSValue

    1>NSNmuber的父类,可以包装任何数据类型
        NSValue *value = [NSValue valueWithPoint:CGPointMake(1,5)];
        NSPoint p = [value pointValue];

*NSDate

    1>创建
        <1>NSDate *date = [NSDate date];
            创建出的是0时区的时间
        <2>NSDate *date2 = [NSDate dateWithTimeInterval:5 sinceDate:date];
            创建出的是比date晚5秒的NSDate对象

    2>NSTimeInterval seconds = [date timeIntervalSince1970];
            表示从1970年开始走过的秒数

    3>[date2 timeIntervalSinceNow];
            表示从当前时间和date2差的秒数

    4>日期格式化,NSDate转为NSString
        <1>NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
            formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
            NSString *str = [formatter stringFromDate:[NSDate date]];

    5>NSString转为NSDate
        NSString *time = @"2011/12/2 11:12"
        设置格式化
        NSDate *date2 = [formatter dateFromString:time];
作者: vvvisa    时间: 2016-4-2 21:59
都没有人回复的
作者: vvvisa    时间: 2016-4-2 23:13
{:2_33:}{:2_34:}{:2_35:}
作者: vvvisa    时间: 2016-4-3 00:54
Foundation框架还是比较繁琐的
作者: vvvisa    时间: 2016-4-4 11:17
自己顶自己
作者: UKnowINeedYou    时间: 2016-4-5 10:08
我来踩一下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2