Foundation框架-类

OC字符串(NSString/NSMutableString)

NSString:不可变字符串

  • 字符串创建:
//直接创建
NSString *s1=@”jack”;

//调用方法创建
NSString *s2=[[NSString alloc] initWithFormat:@”age is %d”,10];
//对应的类方法
NSString *str3=[NSString stringWithFormat:@"my name is jack"];
  • C语言字符串与OC字符串之间的转换

//C语言字符串转换OC字符串
NSString *s3==[[NSString alloc] initWithUTF8String:”jack”;
//对应的类方法
NSString *s4=[NSString stringWithUTF8String:"jack"];

//OC字符串转换C语言字符串
const char *c=[s3 UTF8String];

  • URL:资源路径(固定写法 -> 协议头://路径)

网络路径 -> fttp://

本地路径 -> file://

ftp服务器路径 -> ftp://

  • 文件中读取字符串及字符串写入文件

从文件中读取字符串:

NSUTF8StringEncoding(编码方式,此编码可处理中文)

第一种读取方式(只能读取文件file)

NSString *str=[[NSString alloc] initWithContentsOfFile:文件路径 encoding:NSUTF8StringEncoding error:nil];

对应的类方法

NSString *str=[NSString stringWithContentsOfFile:@"/Users/zhs/Desktop/test.txt" encoding:NSUTF8StringEncoding error:nil];

第二种读取方式(通过URL资源路径,可读任何资源)

//将文件路径按固定格式(file://)包装成NSURL对象
NSURL *url=[[NSURL alloc] initWithString:@"file:///Users/zhs/Desktop/test.txt"];

//读取包装后的url资源
NSString *str6=[[NSString alloc] initWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
//对应的类方法
NSString *str9=[NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

字符串写入文件:

[str writeToFile:文件路径 atomically:YES encoding:编码方式 error:nil];

  • 访问字符串元素

NSString *str1=@"jack";

//调用方法characterAtIndex遍历
char c=[str1 characterAtIndex:2];
NSLog(@"%c",c);

一般都会有一个类方法跟对象方法配对,且类方法以类名开头。

NSMutableString:可变字符串

//创建可变字符串对象s1
NSMutableSting *s1=[NSMutableString stringWithFormat:@”my age is 10”];

//将11 12 拼接在s1字符串后面
[s1 appendSting:@”11 12”];

NSRange range=[s1 rangeOfString:@”is”];
//删除字符中s1中的is
[s1 deleteCharactersInRange:range];

常见集合类

  • NSArray/NSMutableArray

  • NSSet/NSMutableSet

  • NSDictionary/NSMutableDictionary

NSArray(OC数组类,隶属集合类)

OC数组只能存放OC对象,且不能存放nil

  • 创建OC数组对象

          

    //创建OC空数组
    NSArray *arr1=[NSArray array];
    for (id obj in arr1  ) {
        NSLog(@"%@",obj);
    }
    
    //创建只有一个对象的数组
    NSArray *arr2=[NSArray arrayWithObject:@"jack"];
    for (id obj in arr2) {
        NSLog(@"%@",obj);
    }
    
    //创建包含多个对象的数组
    NSArray *arr3=[NSArray arrayWithObjects:@"jack",@"lucy",@"peter",nil]; //nil不可缺失,通过nil判断数组中的对象元素
    
    //快速创建包含多个对象的数组,<span style="color:red;">一般用这个</span>
    NSArray *arr4=@[@"jack",@"lucy",@"peter"];

  • 访问数组中的元素

          [数组名 objectAtIndex:下标];调用对象方法访问

          数组名[下标];直接访问,一般用这个

  • 数组遍历
    //第一种遍历方式(快速遍历)
    for (id obj in arr3) {
        //可调用方法获得对象元素下标
        NSUInteger i=[arr3 indexOfObject:obj];
        NSLog(@"%ld第一方式%@",i,obj);
    }
    //第二种遍历方式
    for (int i=0; i<[arr3 count]; i++) {
        NSLog(@"第二方式1%@",arr3[i]);
        NSLog(@"第二方式2%@",[arr3 objectAtIndex:i]);
    }
    //第三种遍历方式(利用block遍历)
    [arr3 enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        NSLog(@"第三方式%@",obj);
    }];  //每遍历到一个元素,就会调用一次block,并且当前元素和索引位置当做参数传给block,*stop用于停止循环

  • 不可变数组常用的方法

    NSArray *array=[NSArray arrayWithObjects:@"1",@"2" ,nil];
    
    /*
     1.对象方法arrayByAddingObject
     将原有数组与新增对象拼接为新数组并返回新数组
     */
    NSArray *array1=[array arrayByAddingObject:@"3"];
    
    /*
     2.对象方法arrayByAddingObjectsFromArray
     将原有数组与另一数组拼接为新数组并返回新数组
     */
    NSArray *array2=[array arrayByAddingObjectsFromArray:[NSArray arrayWithObjects:@"4",@"5", nil]];
    
    NSLog(@"%@",array1);
    
    NSLog(@"%@",array2);
    
    
    NSArray *array3=[NSArray arrayWithObjects:@"1",@"2",@"3",nil];
    /*
     3.对象方法subarrayWithRange
     截取原数组中某范围(range)的元素形成新数组,并返回
     新数组
     */
    
    NSArray *array4=[array3 subarrayWithRange:NSMakeRange(0, 2)];
    
    NSLog(@"%@",array4);
    
    /*
     4.对象方法componentsJoinedByString
     将数组中的所有对象元素以某分隔符号连接生成字符串并返
     回生成的字符串
     */
    NSString *str=[array3 componentsJoinedByString:@"-"];
    NSLog(@"%@",str);
    
    /*
     5.对象方法writeToFile
     将数组内容写入生成xml文件
     */
    NSString *url=@"/Users/zhs/Desktop/array.xml";
    [array3 writeToFile:url atomically:YES];
    
    /*
     6.类方法arrayWithContentsOfFile
     从文件中读取数组内容(文件格式必须为xml)
     */
    NSArray *array5=[NSArray arrayWithContentsOfFile:url];
    NSLog(@"%@",array5);


NSMutableArray:可变数组

  • 创建OC数组对象

          NSMutableArray *array1=[NSMutableArray array]; 创建一个可变空数组

          NSMutableArray *array2=[NSMutableArray arrayWithObject:@”jack ”]; 创建存储一个对象的数组

          NSMutableArray *array3=[NSMutableArray arrayWithObjects:对象1,对象2,...,nil];nil不可缺失,通过nil判断数组中的对象元素

          可变数组NSMutableArray不支持快速创建数组@[对象1,对象2…];因为此方法返回值类型为NSArray类型的数组对象

  • 添加、删除数组对象元素

          [array1 addObject:@”jack”;]   //添加数组对象元素

          [array1 removeAllObjects];    //删除所有数组对象元素

          [array1 removeObjectAtIndex:1];  //删除下标为1的数组对象元素

NSSet:与数组相同,但没有顺序

  • 创建NSSet对象

          NSSet *st=[NSSet set]; 创建一个空NSSet

          NSSet *st1=[NSSet setWithObjects:@”jack ”,@”tom”,@”mik”,nil]; 创建存储多个对象的NSSet

  • NSSet中对象访问

          NSString *st1=[s2 anyObject];  //随机拿出一个元素

NSMutableSet:可变

  • 创建NSMutableSet对象

          NSMutableSet *st=[NSMutableSet set]; 创建一个空数组

          NSMutableSet *st1=[NSMutableSet setWithObjects:@”jack ”,@”tom”,@”mik”,nil];创建存储多个对象的NSMutableSet

  • NSMutableSet中对象访问

          [st addObject:对象];

          [st removeObject:对象];

  • NSSet和NSArray的对比

          共同点:

                       都是集合,都能存放多个OC对象

                       只能存放OC对象,不能存放非OC对象类型

                       本身都不可变,都有一个可变的子类

          不同点:

                        NSArray有顺序,NSSet没有顺序

NSDictionary

存储键值对(一个索引对应一个对象元素,即键值对),没有顺序,不能存储相同的key,但能存储相同的元素。

  • 字典创建

          //创建只存储一组键值对的字典、

          NSDictionary*dict=[NSDictionary dictionaryWithObject:元素值(@”jack”) forKey:索引值(@”name”)];  

         //创建存储多个键值对字典

         NSDictionary*dict=[NSDictionary dictionaryWithObjects:数组 forKeys:数组];

         NSDictionary*dict=[NSDictionary dictionaryWithObjectsAndKeys:元素,对应索引,元素,对应索引,…,nil];

         快速创建字典(通常用这个)

         NSDictionary*dict=@{索引:对应元素,索引:对应元素,...};

  • 字典元素访问

           id obj=[dict objectForKey:索引];

          快速访问字典元素

          id obj=dict[索引];

  • 字典实例

    //字典创建
    
        //创建存储一组键值对的字典
        NSDictionary *dic1=[NSDictionary dictionaryWithObject:@"jack" forKey:@"name"];
    
        //创建存储多组键值对的字典
        //第一种方式
        NSArray *arrobj=[NSArray arrayWithObjects:@"jack",@"18",@"郑州", nil];
    
        NSArray *arrkey=[NSArray arrayWithObjects:@"name",@"age",@"address", nil];
    
        NSDictionary *dic2=[NSDictionary dictionaryWithObjects:arrobj forKeys:arrkey];
    
        //第二种方式
        NSDictionary *dic3=[NSDictionary dictionaryWithObjectsAndKeys:@"jack",@"name",@"18",@"age",@"郑州",@"address", nil];
    
        //快速创建字典
        NSDictionary *dic4=@{@"name":@"jack",@"age":@"18",@"address":@"郑州"};
    
    //访问字典元素
    
        //调用方法访问
        NSLog(@"访问年龄:%@",[dic2 objectForKey:@"age"]);
    
        //快速访问
        NSLog(@"访问名字:%@",dic2[@"name"]);
    
    //遍历字典
    [dic2 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"dic2%@:%@",key,obj);
    }];
    
    [dic3 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"dic3%@:%@",key,obj);
    }];
    
    [dic4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"dic4%@:%@",key,obj);
    }];

NSMutableDictionary

同样不支持快速创建,其他同NSMutableDictionary

  • 添加删除字典元素:

          [字典名  setObject:元素forKey: 索引];  //添加

          可以重复对一个索引进行赋值,后面赋值覆盖前面赋值

          [字典名  removeObjectForKey: 索引];   //删除

  • 遍历字典

          利用block遍历字典

          [dict  enumerateObjectsUsingBlock:

          //每遍历到一对键值,就会调用一次block,并且当前元素和索引位置当做参数传给block*stop用于停止循环

          ^(id key,id obj,BooL *stop)]

          {

                   NSLog(@”%ld-%@“,key,obj);

          }];

  • 字典实例

//创建空字典
    NSMutableDictionary *mudic1=[NSMutableDictionary dictionary];
    //创建存储多个键值对的字典
    NSMutableDictionary *mudic2=[NSMutableDictionary dictionaryWithObjectsAndKeys:@"jack",@"name",@"18",@"age", nil];
//添加字典元素
    [mudic2 setObject:@"zhengzhou" forKey:@"address"];
//遍历输出添加后的字典
    [mudic2 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {
        NSLog(@"%@:%@",key,obj);
    }];
//删除字典元素
    [mudic2 removeObjectForKey:@"address"];


集合类总结

  • NSArray/ NSMutableArray

          有序

          快速创建(不可变):@obj1,obj2,obj3,…];

          快速访问元素: 数组名[下标];

  • NSSet/NSMutableSet

          无序

  • NSDictionary/NSMutableDictionary

          无序

          快速创建(不可变):@{key1:value1,key2:value2,…};

          快速访问元素:字典名[key];

NSNumber/NSValue

NSNumber(继承自NSValue)

作用:将基本数据类型(整型,字符型,浮点型)包装成NSNumber对象。

如:

     [NSNumber numberWithInt:10];  //将整型10转为number对象

     快速转换(编译器特性)

     @整型;如:@10;

注:当整型为变量时,要加(),如:int a;@(a);

NSValue

作用:将各种数据类型(包括结构体,枚举等)包装成NSValue对象

    //结构体CGPoint包装成NSValue对象
    NSValue *value=[NSValue valueWithPoint:CGPointMake(10, 10)];
    
    //将value对象转换为结构体CGPoint
    CGPoint p=[value pointValue];


NSDate

创建NSDate对象

NSDate *date = [NSDate date];

日期格式化类:NSDateFormatter

作用:将日期对象按一定格式转换为时间字符串输出到屏幕

formatter.dateFormat=@”字符串的格式”;

//无论date=>String,还是string=>date,formatter.dateFormat设定的都是字符串的格式
//当date=>String时,formatter.dateFormat告诉formatter要转换成什么格式的字符串
//当String=>date时,formatter.dateFormat告诉formatter要转的字符串是什么格式

代码演示:

/*date转换为string*/

//创建时间对象,此对象为本句代码执行时的时间
NSDate *date = [NSDate date];
//定义一个日期格式化类对象
NSDateFormatter *formatter=[[NSDateFormatter alloc] init];

//告诉formatter要转换成什么格式的字符串
formatter.dateFormat=@”yyyy-MM-dd HH:mm:ss ”;

//日期转换字符串
NSString *str=[formatter stringFormDate:date];



/*String转换为date*/
NSString *time = @”2014=07=21 17:56”;//注意:字符串中date部分即2014/07/21用"/"或"-"或","分隔,time部分即17:56部分
用冒号:隔开,且中间必须有空格时,formatter.dateFormat的设定可以省略

//定义一个日期格式化类对象
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];

//告诉formatter要转的字符串是什么格式
<pre name="code" class="objc">formatter.dateFormat=@”yyyy=MM=dd HH:mm”;
//字符串转换日期NSDate *date = [formatter dateFromString:time];
 

 
 

          
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值