你的位置:首页 > 操作系统

[操作系统]Foundation框架中一些类的使用


提示:  这篇博文主要介绍了Foundation框架中一些类的使用方法,都是以代码方式展示的,可能会比较乱,但都是些常用的方法,这些方法常用自然就会记住所以不用纠结,注意主要记方法的第一个单词,单词不认识的话可以记前三个字母,再配合提示查找

------------------------------------------------------------------------------------------------------------------ 

NSURL简介

什么是URL?

URL的全称是Uniform Resource Locator(统一资源定位符) URL是互联网上标准资源的地址 互联网上的每个资源都有一个唯一的URL,它包含的信息指出资源的位置 根据一个URL就能找到唯一的一个资源

URL的格式?

基本URL包含协议、主机域名(服务器名称\IP地址)、路径

可以简单认为: URL == 协议头://主机域名/路径

例如:http://www.baidu.com/123.jpg

常见的URL协议头(URL类型)

http\https :超文本传输协议资源, 网络资源

在URL前加https://前缀表明是用SSL加密的。 你的电脑与服务器之间收发的信息传输将更 加安全。

Web服务器启用SSL需要获得一个服务器证书并将该证书与要使用SSL的服务器绑定。 http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。http 的连接很简单,是无状态的

https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

ftp :文件传输协议 

// NSURL OC提供了一个URL处理的一个类    // http    // https 加密    // ftp://    // file:// 本地文件    // NSURL 写入文件    // 1)通过 URLWithString 构建一个NSURL    // URLWithString 可以构建本地路径的URL    // 可以构建路径,调用手机系统的程序    // 打电话    NSURL *url = [NSURL URLWithString:@"tel://10086"];    // 发短信    NSURL *url = [NSURL URLWithString:@"sms://10086"];    // 保存文件到本地    NSURL *url = [NSURL URLWithString:@"file://地址"];    // 将字符串写入本地    NSString *str = @"xxxxx";    BOOL isOk = [str writeToURL:<#(NSURL *)#> atomically:<#(BOOL)#> encoding:<#(NSStringEncoding)#> error:<#(NSError *__autoreleasing *)#>];    // 第一个参数文件路径 第二个参数是否利用原子性 第三个编码标准NSUTF8StringEncoding 最后一个错误信息    // 一般写入文件都要进行判断是否写入成功    NSError *error;    if (isOk) {      NSLog(@"写入成功");    } else {      NSLog(@"%@",&error);    }

 NSURL的一些用法

NSString

// 快速创建字符串  NSString *str = @"xxxx";  // 字符串写入文本  BOOL isOk = [str writeToFile:@"/User/Apple/Desktop/1.tex" atomically:YES encoding:NSUTF8StringEncoding error:nil];   NSString *str1 = @"abc";  // a 97  NSString *str2 = @"abc";  // A 65    //取出每个字符的ASCII码值 ,比较ASCII码值大小  //compare方法比较大小  //compare 默认的区分大小写的  //compare 这个函数,不能增加条件  //    NSComparisonResult result = [str1 compare:str2];    //比较的时候,不区分大小写,参考字符的个数  NSComparisonResult result = [str1 compare:str2 options:NSCaseInsensitiveSearch|NSNumericSearch];  //  switch (result) {    case NSOrderedAscending:      NSLog(@"str1 < str2 升序");      break;          case NSOrderedDescending:      NSLog(@"str1 > str2 降序");      break;          case NSOrderedSame:      NSLog(@"str1 == str2 ");      break;          default:      break;  }//地址的比较    // "==" 不能够判断字符串是否相等的        //判断字符串内容真正是否相等,使用是    //isEqualToString:    //注意:他是区分大小写的        if ([str1 isEqualToString:str3]) {      NSLog(@"相等");    }else{         NSLog(@"不相等");    } /*   检测字符串的前缀和后缀   */  NSString *url = @"https://www.baidu.com";    //如何检测这个字符串是否是一个网址  //http://  https://  // 检测一个字符串的前缀是否以 http:// 开头 或者 https:// 开头  // [str hasPrefix:@"要检测的内容"];    if([url hasPrefix:@"http://"]||[url hasPrefix:@"https://"]){        NSLog(@"是一个网址");  }else{        NSLog(@"这不是一个网址");  }    //检测字符串的后缀  // xxxx.jpg  判断 字符串的后缀是否是".jpg"  // xxxx.png  // xxxx.jpeg  // xxxx.gif  NSString *imgName = @"xxxxx.doc";  // [str hasSuffix:@"带检测的后缀"]  if([imgName hasSuffix:@".jpg"]||[imgName hasSuffix:@".png"]||[imgName hasSuffix:@".jpeg"]||[imgName hasSuffix:@".gif"]){        NSLog(@"是一个图片");  }else{        NSLog(@"这不是一个图片");  }//字符串的查找    // 查找某个字符串在另外一个字符串中首次出现的位置    //   0123456789    //1 @"asdaiosffsdafiosasdfsffitcastasdfasd"    //2 @"ios"    //  4  3        // 1 rangOfString 2    NSString *str1 =@"asdaiosffsdafiosasdfsffitcastasdfasd";    NSString *str2 =@"cjk";    // 字符串查找    // 查找2 在 1中首次出现的位置    // 如果查找到了,返回2在1中的位置和长度    // 如果查找不到,返回的信息:    //      location  特别大的数(NSNotFound) 最大的long类型的数    //      length   0    // range 结构体变量 NSRange 结构别名    NSRange range = [str1 rangeOfString:str2];        //判断是否查找到了    if(range.location!=NSNotFound){    //range.location 表示字符串首次出现的位置    //range.length 字符串出现的长度(实质上就是子字符串的长度)    NSLog(@"%lu,%lu",range.location,range.length);    }else{          NSLog(@"在%@中没有找到这个字符串%@",str1,str2);    }// 字符串的截取  NSString *str = @"http://www.baidu.com";    //1) 从xx位置开始,到最后结束(包含xx这个位置的字符)  NSString *str1 = [str substringFromIndex:5];  NSLog(@"str1 = %@",str1);      //2) 从开始位置,到xx位置结束(不包含xx这个位置)  NSString *str2 = [str substringToIndex:5];  NSLog(@"str2 = %@",str2);      //3) 截取一个范围 range  NSRange r1 = {3,4};  NSString *str3 = [str substringWithRange:r1];  NSLog(@"str3 = %@",str3);    //字符串的替换    // @"asdfsdafasdfdasdfsa" ----> a 替换成 "*"    // @" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa"        NSString *str =@"asdfsdafasdfdasdfsa";    //    str stringByReplacingOccurrencesOfString:@"源字符串中的内容" withString:@"要替换成新的内容"    //把a替换成 *    NSString *newStr = [str stringByReplacingOccurrencesOfString:@"a" withString:@"*"];    NSLog(@"newStr = %@",newStr);        // 把空格给去掉    str =@" asdfasfd asdfsadf asdf asdfas asdf asdf asdfa";    newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];     NSLog(@"newStr = %@",newStr);// 字符串转各种数值  NSString *str = @"11";  int a = [str intValue];  NSString *str1 = @"12.21";  double b = [str1 doubleValue];  NSString *str2 = @"12.12f";  float c = [str2 floatValue];    //OC的字符串和 C的字符串互相转换问题    // char* NSString    //1) C---->OC对象        char *s = "zhangsanfeng";    printf("%s\n",s);        //思路:创建一个OC的字符串对象,用C语言的字符串创建    NSString *str = [NSString stringWithUTF8String:s];    NSLog(@"str = %@",str);        //2) OC对象 --> C的字符串    NSString *str2 = @"zbz";    // 把str2 转 C的字符串    const char *s1 = [str2 UTF8String];    printf("s1 = %s\n",s1);

NSString的一些用法

NSRange

// NSRange的定义typedef struct _NSRange {  NSUInteger location; // 位置  NSUInteger length;  // 从该位置算起的长度} NSRange;

NSMutableString

 
    // 可变的字符串    NSMutableString *str2 = [NSMutableString stringWithFormat:@"Jack"];    // 在Jack后面加上&Rose    [str2 appendString:@"&Rose"];   NSMutableString *str = [NSMutableString string];    //1) appendFormat 格式化的添加字符串  [str appendFormat:@"http://www.baidu.com/%d",100];    //str http://www.baidu.com/100  NSLog(@"%@",str);    //2) 删除字符串一部分内容  [str deleteCharactersInRange:NSMakeRange(3, 4)];  NSLog(@"%@",str);  //3) 插入一个字符串  [str insertString:@"p://" atIndex:3];  NSLog(@"%@",str);    //4) 替换字符串的一部分内容  [str replaceCharactersInRange:NSMakeRange(11, 5) withString:@"xxxxx"];  NSLog(@"%@",str);// 注意不能这么写   NSMutableString *str = @"abc";

 NSMutableString的一些用法

NSArray

 
//NSArray特点:    // 一旦创建成功,内容不可改变    // 只能存放OC对象        // 1)创建一个空数组    NSArray *arr1 = [NSArray array];    // 2)创建数组,只有一个元素    NSArray *arr2 = [NSArray arrayWithObject:@"1"];    // 3)创建数组,有多个元素    // nil 表示数组赋值结束    // 常见写法    NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1, nil];            NSLog(@"arr3 = %@",arr3);    // 4)调用对象方法,创建数组    // nil Nil NULL NSNULL    NSArray *arr4 = [[NSArray alloc] initWithObjects:@"three",[NSNull null],@"four", nil];            NSLog(@"arr4 = %@",arr4);    // 5)用一个数组可以创建另外一个数组    NSArray *arr5 = [NSArray arrayWithArray:arr3];            NSLog(@"arr5 = %@",arr5); // 用简化的方式,来定义和访问数组元素    //1)用简化的方式,定义数组    //格式: @[ 数组元素 ]    NSArray *arr = @[@"1",@"one",@"3",@4,@"ONE"];// 数组的常见的方法  NSArray *arr3 = [NSArray arrayWithObjects:@"one",@"two",@1,@"three", nil];  NSLog(@"arr3 = %@",arr3);    // 1)获取数组的长度 count获取数组的元素的个数  NSLog(@"%ld",arr3.count);    // 2)根据下标,获取下标对应的对象  NSLog(@"%@",[arr3 objectAtIndex:3]);    // 3)返回元素的下标  NSUInteger loc = [arr3 indexOfObject:@"three"];  NSLog(@"%ld",loc);    // 4)数组中是否包含了某个元素  if([arr3 containsObject:@"four"]){        NSLog(@"包含此元素");      }else{        NSLog(@"不包含");  }  // 定义一个数组    NSArray *arr = @[@"one",@"two",@"three",@"four"];        // 对数组进行遍历        //1) 普通的方式,通过下标访问    for (int i=0; i<arr.count; i++) {      NSLog(@"-> %@",arr[i]);    }        //2) 快速枚举法 for循环的增强形式    for (NSString * str in arr) {       NSLog(@"---> %@",str);    }        //3) 使用block的方式,进行访问    //                数组元素      元素下标   是否停止    //stop:YES 会停止, stop:NO 不会停止    [arr enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {            if(idx == 2){              *stop = YES; //停止 // break;              }else{              NSLog(@"idx = %ld,obj = %@",idx,obj);      }                }];    // 定义一个数组    NSArray *arr = @[@1,@2,@3,@4];        // 1)把数组中的元素用 "-" 连接起来    // [数组 componentsJoinedByString @"分隔符"];    // 1-2-3-4    NSString *str = [arr componentsJoinedByString:@"-"];    NSLog(@"str = %@",str);                //2) 给一个字符串,分割成一个数组    // 400-800-12580  //取得 400  12580  800    NSString *str2 = @"400-800-12580";    NSArray *arr2 = [str2 componentsSeparatedByString:@"-"];    NSLog(@"%@",[arr2 firstObject]);    NSLog(@"%@",[arr2 lastObject]);    NSLog(@"%@",arr2[1]);        str2 = @"400-800-12580#400-888-11200";    NSArray *arr3 = [str2 componentsSeparatedByString:@"#"];    NSLog(@"arr3 = %@",arr3);        // 第一个电话的每一部分    NSArray *arr4 = [[arr3 firstObject] componentsSeparatedByString:@"-"];    NSLog(@"arr4 = %@",arr4);        NSArray *arr5 = [[arr3 lastObject] componentsSeparatedByString:@"-"];    NSLog(@"arr5 = %@",arr5);

 NSArray的一些用法

NSMutableArray

 // 数组的使用    // 1)创建数组     // i. 空数组    NSMutableArray *arr1 = [NSMutableArray array];    NSLog(@"%p",arr1);         // ii.创建的时候初始化一个元素    NSMutableArray *arr2 = [NSMutableArray arrayWithObject:@"one"];         // iii.创建数组的时候,初始化多个元素    NSMutableArray *arr3 = [NSMutableArray arrayWithObjects:@"one",@"two",@3,nil];         // IV . 创建一个数组,并且指定长度,    NSMutableArray *arr4 = [NSMutableArray arrayWithCapacity:5];       //2) 添加元素    [arr1 addObject:@"fengjie"];     NSLog(@"%p",arr1);    //插入元素到指定的位置    [arr1 insertObject:@"zbz" atIndex:0];      //3) 删除元素    // 根据对象内容删除    [arr1 removeObject:@"zbz"];    // 根据位置删除    [arr1 removeObjectAtIndex:1];    // 全部删除    [arr1 removeAllObjects];    //4) 修改元素    // two --> four    [arr3 replaceObjectAtIndex:1 withObject:@"four"];    // four --> five    // 更加简单地方法    arr3[1] = @"five";    NSLog(@"%@",arr3);        // 5) 查找元素    BOOL isSearch = [arr3 containsObject:@"four"];    NSLog(@"%d",isSearch);        //6) 交换元素    // 1  2  3  4  5    // 5  2  3  4  1    //temp = a[0];    //a[0] = a[len-1];    //a[len-1] = temp;    NSMutableArray *arr5 =[NSMutableArray arrayWithObjects:@1,@2,@3,@4,@5, nil];    // 可以交换数组元素    [arr5 exchangeObjectAtIndex:0 withObjectAtIndex:4];    NSLog(@"%@",arr5);

NSMutableArray的一些用法

NSDictionary

 
// NSDictionary 不可变的,一旦创建,内容就不能添加\删除(不能改动)    // 1)创建空字典    NSDictionary *dict1 = [NSDictionary dictionary];    // key  value    // zs ---> 张三        // ls ---> 李四    // 2) 创建只有一组键值对的字典    NSDictionary *dict2 = [NSDictionary dictionaryWithObject:@"zhangsan" forKey:@"zs"];        // 3)创建多组键值对的字典    // value值,key值    NSDictionary *dict3 = [NSDictionary dictionaryWithObjectsAndKeys:@"value1",@"k1",@"value2",@"k2", nil];        // 注意;    // 字典的key值和value值,都必须是对象        // 4)快速创建一个字典    // @{,,key值:value值,,,};    // key值不能重复:    // 如果重复了,也不会报错    // 如果重复了,最后添加的将不能够保存到字典中        NSDictionary *dict4 = @{@"zs":@"zhaosi",@"zs":@"zhangsan",@"ls":@"lisi",@"bz":@"banzhang"};        NSLog(@"%@",dict4); // 以%@格式打印字典,控制台输出一个{  }    // 5)获取字典的长度    NSLog(@"%lu",dict4.count);    // 6)根据key值取出value值    //   zs   zhaosi    //                  key    NSString *str = [dict4 objectForKey:@"zs"];    NSLog(@"str = %@",str);        //7) 字典的遍历问题    // 第一步:获取所有的key    // 第二步:根据key获取value//    for(NSString *key in dict4){//      NSLog(@"key = %@,value = %@",key,[dict4 objectForKey:key]);//    }    //                      key   value    stop    [dict4 enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) {            NSLog(@"%@ --> %@",key,obj);          }];

 NSDictionary的一些用法

NSMutableDictionary

 
  // 1)可变字典的创建    NSMutableDictionary *dict1 = [NSMutableDictionary dictionary]; // 创建空字典    NSMutableDictionary *dict2 = [NSMutableDictionary dictionaryWithCapacity:3];    // 2)给可变字典添加键值对        [dict1 setValue:@"zhaosi" forKey:@"ls"];// 因为key值重复了,所以添加不上    [dict1 setValue:@"lisi" forKey:@"ls"]; // ls        [dict1 setValue:@"liuneng" forKey:@"ln"];    NSLog(@"%@",dict1);        //3) 删除//    [dict1 removeObjectForKey:@"ls"];//    [dict1 removeAllObjects];    NSLog(@"%@",dict1);    // 4)修改    //    [dict1 setObject:@"zhaosi" forKey:@"ls"];    // 简写形式    dict1[@"ls"] = @"xxxxx";     NSLog(@"%@",dict1);    // 5)查找    // 获取所有的key值    NSArray *arr = [dict1 allKeys];    if([arr containsObject:@"ls"]){          NSLog(@"存在ls的key");    }              }

 NSMutableDictionary的一些用法

 小知识点:

位枚举:枚举值是2的0次方、1次方、2次方...

它的存在是为了有些方法中需要写入枚举值,但有时候我们并不需要枚举这时候可以用0来填写枚举值