OC语言--Foundation框架

------ Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、基础知识
Foundation-基础框架.框架包含了开发中常用的数据机构,如结构体,枚举等,是其他ios框架的基础,如果要想使用foundation框架中的数据类型,那么只要您包含头文件及可以。
即#import <Foundation/Foundation.h>
二、常用的结构体介绍及简单使用
Foundation框架中的常用的结构体
NSRange(location length) 表示范围
NSPoint\CGPoint            表示坐标点
NSSize\CGSize            表示图标大小
NSRect\CGRect            表示图标位置及大小
三、NSRange
NSRange的参数:location 、length
NSRange的创建:
//NSRange的创建方式

   

NSRange r1 = {2, 4};    // 可读性不好

NSRange r2 = {.length = 4,.location = 2};    // 赋值不受参数顺序的限制,代码太多,繁琐
    //以上两种方式在开发中不常用
    
 //一般NSRange的创建应用系统自带的函数NSMakeRange/NSMakeRange
NSRange r3 = NSMakeRange(2, 4);    // 开发中常用
NSRange r4 = NSRangeMake(2, 2);    
NSRange的应用:
void range()
{
    NSRange r1 = {2, 4};
    NSRange r2 = {.length = 4, .location = 2};
    NSRange r3 = NSRangeMake(2, 4);
    NSRange r4 = NSMakeRange(2, 4);        //这四种创建方式结果一样
    NSString *str = @"I am a student";
    //要求查找"am"在str字符串中的位置
    NSRange range = [str rangeOfString:@"am"];    //返回{2, 2}
    NSRange range1 = [str rangeOfString:@"good"];    //返回{-1, 0}
    NSLog(@"字符串\"am\"在字符串%@中的位置:%d,长度为:%d", str, range.location, range.length);
    NSLog(@"字符串\"goog\"在字符串%@中的位置:%d,长度为:%d", str, range1.location, range1.length);
}
四、NSPoint\CGPoint(开发中常用CGPoint,因为这个是跨平台的)
NSPoint\CGPoint:表示点坐标,参数x、y
void point()
{
    CGPoint p1 = NSMakePoint(10, 10);
    CGPoint p2 = NSPointMake(10, 10);
    //CGPointZero == NSPointMake(0,0);        //坐标原点
    
    //将结构体转为字符串
    NSString *str = NSStringFromPoint(p1);
    NSLog(@"%@", str);    //将p1中的值一次性全部输出
    
    //比较两个点是否相等
    BOOL p = CGPointEqualToPoint(p1, p2);    //返回YES
    BOOL pp = CGPointEqualToPoint(NSMakePoint(2,3), NSMakePoint(3, 4));// 返回NO
}
五、NSSize\CGSize:表示元素宽高,参数width、height
void size()
{
    NSSize s1 = NSSizeMake(10, 3);    // 创建宽为10,高为3的矩形
    NSSize s2 = NSSizeMake(30, 2);
    //NSSizeZoro == NSSizeMake(0,0);    元素的宽高为0
    NSString *str2 = NSStringFromSize(s1);
    NSLog(@"%@", str);
    
    BOOL p = CGSizeEqualToSize(s1, s2);    //返回YES
    BOOL pp = CGSizeEqualToSize(NSMakeSize(3,4), NSMakeSize(3, 4));// 返回YES
}
六、NSRect\CGRect:表示元素的具体位置和大小,参数x,y,width,height
void size()
{
    NSPoint p1 = NSMakePoint(2,3);
    NSPoint p2 = NSMakePoint(11,4);
    NSSize s1 = NSSizeMake(10, 3);    
    NSRect re = NSRectMake(p1, s1);    //以点p1为左上角点,向右宽度为10,向下高度为3的范围
    NSRect re2 = {{2, 3},{10, 3}};
    
    BOOL c = CGContentsPoint(re, p2);// 返回YES
}
七、NSString、NSMultableString

OC中常用的系统类:

NSString、子类NSMultableString,NSArray、子类NSMultableString,NSSet、子类NSMultableSet,NSDictionary、子类NSMultableDictionary,NSObject

NSString:不可变字符串
NSMultableString:可变字符串
字符串的创建
void creatString()
{
    NSString *str = @"zsling";    //快速创建字符串,经常使用
    NSString *str2 = [[NSString alloc] initWithString:@"zsling"];//不常使用
    NSString *str3 = [[NSString alloc] initWithFormat:@"zsling's age is %d", 20];// 字符串拼接
    NSString *str4 = [[NSString alloc] initWithUTF8String:"zsling"];// C语言字符串
    char *s = [str4 UTF8String];    //将OC字符串转为C语言字符串
    //读取文件,将文件内容保存到字符串中
    NSString *str5 = [[NSString alloc] initWithContentsOfFile:@"/user/apple/Desktop/abc.txt" encoding:NSUTF8StringEncoding Error:nil];
    //再将此字符串写入一个新的文件中
    [str5 writeToFile:@"/user/apple/Desktop/aa.txt" atomically:YES encoding:NSUTF8StringEncoding Error:nil];
    
    //取出URL路径中的文件内容
    NSURL *url = [[NSURL alloc] initWithString:@"file:///user/apple/Desktop/abc.txt" encoding:NSUTF8StringEncoding Error:nil];
    NSString *str6 = [[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding Error:nil];
    
    //将字符串写到URL的文件中
    NSURL *url2 = [NSURL fileURLWithPath:@"/user/apple/Desktop/aa.txt"];
    [str6 writeToURL:url2 atomically:YES encoding:NSUTF8StringEncoding Error:nil];
}

void createMultableString()
{
    NSMultableString *str = [NSMultableString stringWithFormat:@"age is 10"];
    [str appendString:@"11,12"];    //给字符串追加"11,12"字符串,返回的是str本身
    NSRange range = [str rangeOfString:@"is"];        //{4,2}
    [str deleteCharactersInRange: range];            //删除字符串
    
    //NSString类字符串的添加删除
    NSString *str2 = [NSString stringWithFormat:@"age is 10"];
    NSString *str3 = [str2 stringByAppendingString:"11, 12"];    //新创建一个字符串,并将str2+"11, 12"赋值给str3
}
八、NSArray、NSMultableArray
OC数组:只能存放OC对象,不能存放非OC对象。且数组不能存放nil值。
void creatArray()
{
    NSArray *array = [NSArray array];    //这个数组永远是空数组
    NSArray *array2 = [NSArray arrayWithObject:@"zsling"];    //有一个元素的数组
    NSArray *array3 = [NSArray arrayWithObjects:@"zsling", @"jack", @"rose", nil];// 多个元素的数组,nil是数组元素的结束标记
    NSLog(@"%ld", [array3 count]);    //返回array3中元素的个数
    NSLog(@"%@", [array3 objectAtIndex:1];    //返回jack
    NSLog(@"%@", array3[2]);    //编译器特性,返回rose
    NSArray *array4 = @[@"zsling", @"jack", @"rose"];    //快速创建一个NSArray对象
}
遍历数组
void searchArray()
{
    NSArray *array = @[@"zsling", @"jack", @"rose"];
    /*第一种遍历
    for ( int i = 0; i<array.count; i++)
    {
        NSLog(@"%@", array[i]);
    }
    */
    /*第二种遍历
    for ( id obj in array )
    {
        NSUIntor i = [array indexOfObject:obj];        //返回当前正在遍历的元素的位置
        NSLog(@"%ld--%@", i, obj);
    }
    */
    //第三种遍历
    [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop)
    {
        NSLog(@"%ld--%@", idx, obj);//每遍历到一个元素,就调用一次block,且当前元素和索引位置当成参数传递给block
    }]
}

void createMultableArray()
{
    NSMultableArray *array = [NSMultableArray array];
    NSMultableArray *array2 = [NSMultableArray arrayWithObjects:@"zsling", @"rose", @"jack", nil];
    [array addObject:@"jake"];
    [array removeObject:@"rose"];
    [array removeObjectAtIndex:3];
    //[array addObject:nil];错误写法
}
九、NSSet、NSMultableSet (没有顺序)
void creatSet()
{
    NSSet *set = [NSSet set];
    NSSet *set2 = [NSSet setWithObjects:@"jack", @"rose", nil];
    NSString *str = [ser2 anyObject];//随机拿个元素
    NSLog(@"%@", str);
}
void creatMultableSet()
{
    NSMultableSet *set = [NSMultableSet set];
    [s addObject:@"jack"];
    [s removeObject:@"jack"];
}
NSSet与NSArray:
共同点:
*都是集合,都能存放多个OC对象;
*只能存放OC对象,不能存放非OC对象(基本数据类型);
*本身都不可变,都有一个可变的子类
不同点:
*NSArray有序,NSSet无序

十、NSDictionary、NSMultableDictionary

NSDictionaryaa键值对,字典不允许有相同的key

void creatDictionary()
{
    NSDictionary *dc = [NSDictionary dictionary];
    NSDictionary *dc1 = [NSDictionary dictionaryWithObjects:@"jack" forkeys:@"name"];
    NSDictionary *dc2 = @{@"name":@"jake", @"age":@"10", @"phone":@"123"};
    id obj = [dc objectForKey:@"name"];
    id obj2 = dc[@"name"];

}

void creatMultableDictionary()
{
    NSMultableDictionary *dc = [NSMultableDictionary dictionary];
    [dc setObject:@"jack" forKey:@"name"];
    [dc setObject:@"beijing" forKey:@"address"];
    [dc removeObjectForKey:@"name"];
    NSString *str = dc[@"address"];
    NSLog(@"%@", dict);
    //遍历
    [dc enumerateKeyAndObjectsUsingBlock:^(id key, id obj, BOOL *stop)
    {
        NSLog(@"%@--%@",key, obj);
    }]
}
十一、NSNumber:
void createNumber()
{
    int age = 20;
    NSNumber *num = [NSNumber numberWithInt:age];  // 把基本数据类型封装成对象类型
    NSNumber *num2 = [NSNumber numberWithDouble:15.5];  
      
    int no = [num intValue];      // 把对象类型转成基本数据类型  
    double d = [num2 doubleValue];  
        
    NSString *str = [NSString stringWithFormat:@"%d", 20];  // 把字符串类型转成基本数据类型
    int a = [str intValue];  
    
    CGPoint p = CGPoint(10, 10);  // 结构体包装成对象
    NSValue *value = [NSValue valueWithPoint:p];  
    
    CGPoint p1 = [value pointValue]; // 将value转为对应的结构体  
    
    @30  
    @YES            // YES是常量1
    @NO
    @'a'            // 'a'是一个数字  

    int age = 20;  
    @(age);     
    //@age        //不加括号,编译器会认为@age是关键字,但又没有这个关键字,所以会报错
}
十二、NSDate
void createDate()
{
    NSDate *date = [NSDate date];   // // 创建时间对象,NSDate是当前格林治时间    
    
    NSTimeInterval seconds = [date2 timeIntervalSince1980];  // 从1980年开始到date2走过的秒数
    NSTimeInerval seconds2 = [date2 timeIntervalSinceNow];  // date2和现在的时间相差多少秒
    
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];  // 日期格式化类
    formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";      // y年M月d日 H(24)时h(12)时: m分: s秒
    
    NSString *str = [formatter stringFromDate:date];   
    NSString *time = @"2014/11/11 12:00";          // 字符串日期转为NSDate
}
十三、NSValue
void creatValue()
{
    CGPoint p = CGPointMake(2, 2);    // 将结构体转为OC对象
    NSValue *value = [NSValue valueWithPoint:p];  // 将结构体转为Value对象
    
    // [value pointValue]; // 将value转为对应的结构体
    
    NSArray *array = @[value ];
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值