标签:
提示: 这篇博文主要介绍了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); }
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);
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";
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);
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);
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); }];
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"); } }
小知识点:
位枚举:枚举值是2的0次方、1次方、2次方...
它的存在是为了有些方法中需要写入枚举值,但有时候我们并不需要枚举这时候可以用0来填写枚举值
标签:
原文地址:http://www.cnblogs.com/melodyzhy/p/4687335.html