Foundation

Foundation

----------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!-----------------------------


一.Foundation框架

  Foundation是多有其他ios的基础、

  Foundation框架包含很多开发常用的类型如:

  结构体;  枚举;   类

  若想用Foundation中的数据类型,我们要包含它的主头文件

  #import<Foundation/Foundation.h>

  1.结构体

   NSRange结构体

   格式:NSRange range = {location,length}; 查找某个字符串的位置,如果找不到,length=0,location = -1

   赋值:NSString *str = @"i love life"

         NSRange range1 = {2,4}//不常用

         NSRange range2 = NSMakeRange(2,4);

         NSRange range3 = [str rangeOfString@"love"] 查找love的位置范围    

   输出: NSLog(@"local = %ld,length = %ld",range.location,range.length);  打印输出

   NSPoint/CGPoint结构体

   格式: CGPoint p1 = NSMakePoint(1,1);//不常用  确定某个坐标位置

          NGPoint(CGPoint) p2 = CGPOintMake(5,5);

   NSSize/CGSize结构体

   格式: CGSize s1 = CGSizeMake(40,50);    描述某个元素的宽高

          NSSize s2 = NSMakeSiza(10,20);

   NSRect/CGRect结构体

         CGRect相当于同时拥有CGPoint和CGSize

   格式:CGRect rect = {CGFloat x,CGFloat y,CGFloat width,CGFloat height};

         CGRect rect1 = NSMakeRect(1,5,12,10);

         对某个对象位置大小的描述

  为了更简便的打印这些结构体,我们将他们转化为字符串输出

          NSString *str1 = NSStringFromPoint(p2);

          NSString *str2 = NSStringFromSize(s1);

          NSString *str3 = NSStringFromRect(rect1);

          NSLog(@"%@, 5@,%@",str1,str2,str3);

   其他运用:

         CGPointZero == CGPointMake(0,0);原点

         同时还有:CGSizeZero;CGRectZero;

         BOOL b = CGPointEqualToPoint(CGPointMake(1,1),CGpointMake(1,1));

         这是判断俩个位置是否相等;

         同时还有:CGSizeEqualToSize;   CGRectEqualToRect;

   使用这些函数前要在CoreGraphics框架中

 2.类

   NSString类:

   字符串的创建:(对象方法)

        NSString * s1 = @"sl";

        NSSting * s2 = [[NSSting alloc] initWithFormat:@"age is %d",10];  

        NSString * s3 = [[NSString alloc] initWithUTF8String:"sl"];

        const char * c = [s3 UTF8String];

        NSString * s4 = [[NSString alloc] initWithContentsOfFile:文件路径 encoding:

        error:   ];   将某文件转化为代码

        NSURL *url = [[NSURL alloc] initWithContentsOfURL:任意资源路径 encoding:

        error:    ];   将任意链接的内容转化为代码

        NSString *s5 = [[NSString alloc] initWithContentsOfURL:任意资源路径 encoding:

               error:    ];

      类方法:

        [NSSting StringWithFormat:@"age is %d",10]; 

        [NSString StringWithUTF8String:"sl"];

      一般一个类方法与一个对象方法配对

    其他应用:

       NSMutableString 是 NSString 的子类,继承NSString的一切

       NSMutableString是可变的,而 NSString字符串是不可变的

       NSMutableString * s1 = [NSMutableString StringWithFormat:@"age is 10"];定义一个字符串

       [s1 appendString:@" 11 13"]; 链接到s1的后面

       [s1 deleteCharactersInRange:CGRangeMake(4,2)];  删除is

       经常会还会用:

       NSRange range = [s1 rangeOfString:@"is"];  查找is的范围

       [s1 deleteCharactersInRange:range];     删除is

     集合类:  

      可以存放不同类型的的对象

      OC数组只能存放OC对象,不能存放非OC对象类型:int,struct等

      NSArray定义:NSArray * array = [NSArray array];建立一个OC数组

      初始化:     NSArray * array1 = [NSArray arrayWithObjet:@"sl",@"sd",nil];

                  nil是数组元素结束的标志,但并不存储

      访问对象元素:  NSLog(@"%@",[array obectAtINdex:1]); 传入数组某元素位置,打印,不常用

                      NSLog(@"%@", array array1[0]);

      快速创建数组:

                   NSArray * array2 =@[ @"sl",@"sd"];

      遍历数组:   for (int  = 0; i< array.counnt;i++)   

                   {

                         NSLog(@"%@",array[i]);

                    }

      第二种方法:   for (id obj in array){

                         NSUInteger i = [array indexOfobject:obj]; 找出是第几个元素

                          NSLog(@"%ld-%@",i,obj);

                    }

                   obj代表每一个元素

      第三种方法:    [array enumercateObjectsUsingBlock:

                       ^(id obj,NSUInteger idx,BOOL *stop)

                       {    NSLog(@"%ld-%@",i,obj);

                       }]

    NSMutableArray *array = [NSMutableArray arrayWithObject:@"sl",@"as",nil];

      添加元素:

      [array addObject:@"sd"];

    删除元素:

      [array removeObject:@"as"]; 移除某个元素

      [array removeObjectAtIndex:1];  移除第几个元素

    注意: @[] 这样是不可变数组;

   NSSet数组

      NSSet * set = [NSSet setWithObject:@"sj",@"dd",nil]; //建立数组

      NSSet是没有顺序的;

      NSString * str = [NSSet anyObject];  随机产生某个元素

   NSMutableSet与其他数组用法一样;

   NSDictionary(字典)用法:

         NSDictionary *dic = @[@"name":@"sl",@"address":@"beijing"];存储都是一对对的;

         id obj = [dict objectForKey:@"name"];

         还可以写成: id obj1 = dict[@"address"];

         搜索某关键字,得出相应的值;

       NSMutableDictionary *dic1 = [NSMutableDictionary];

       添加键值对:

       [dic1 setObject:@"name" forKey:@"sl"];  

       如果添加的关键字相同将会覆盖原来的

       移除键值对:

       [dic1 removeObject:@"name" forKey:@"sl"];

       遍历字典:(字典中的内容是无序的)

        NSSArray *keys = [dic1 allKey];

        for (int i= 0; i < dic1.count;i++){

               NNString *key = keys[i];

               NNString *object = dic1[key];

               NSLog(@"%@-%@",key,object);

        }

  OC中方的都是对象,没有基本数据类型,所以我们要转化数据类型为OC的

   NSNumber *num = [NSNumber numberWithInt:10];

      这是将int类型转化为NSNumber型;

      int num1 = [num intValue];

      这是将OC转化为int数据类型;

  将结构体转化为OC对象:

      CGPoint *p = CGPointMake(1,1);

      NSValue *v = [NSValue valueWithPoint:p];

      NSArray *array = @[v];

  将value转为结构体:

      [value pointValue];

    NSDate类:

    创建一个时间对象;

    NSDate *date = [NSDate date];  显示0时区的时间

    时期格式化:

     NSDateFormatter *format = [[NSDateFormatter alloc] init];

     format.dateFormat = @"yyyy-MM-dd HH:mm:ss";

     NSDate * date1 = [format stringFormDate:date];

    将NSDate格式标准化输出;


----------------------------ASP.Net+Unity开发、.Net培训、期待与您交流!-----------------------------








      



      

























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值