您的位置:首页 > 移动开发 > IOS开发

《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <一>

2016-03-11 00:00 701 查看
Foundaton基础

framework框架

1.Foundation框架的类结构关系





1 int main(int argc, const char * argv[]) {  2  @autoreleasepool {  3         //C语言字符串
4         char *ch = "Hello objective-c";  5         NSString *ns = @"Hello c";  6         //OC、C语言之间的转换  7         //C语言->OC语言
8         NSString *oc = [NSString stringWithUTF8String:ch];  9         NSLog(@"转为oc语言的字符串:%@",oc); 10         //OC语言->C语言
11         const char *c = [ns UTF8String]; 12         NSLog(@"转为c语言的字符串:%s",c); 13  } 14     return 0; 15 }


1 int main(int argc, const char * argv[]) {  2  @autoreleasepool {  3         //创建字符串
4         NSString *str1 = @"Hello world1!";  5         NSString *str2 = [[NSString alloc] init];  6         str2 = @"Hello world2";  7         //格式化字符串
8         int a = 10;  9         int b = 20; 10         NSLog(@"%@",[NSString stringWithFormat:@"a=%d, b=%d",a,b]); 11         //拼接字符串
12         NSString *str3 = [str1 stringByAppendingString:str2]; 13         NSLog(@"%@",str3); 14         //大小写转换
15         NSString *str4 = @"ABCDEF"; 16         NSString *str5 = [str4 lowercaseString]; 17         NSLog(@"%@",str5); 18         NSString *str6 = [str5 uppercaseString]; 19         NSLog(@"%@",str6); 20         //前缀后缀的判断
21         NSString *str7 = @"www.goodboy.heyang"; 22         BOOL hasPreFix = [str7 hasPrefix:@"www"]; 23         if (hasPreFix) { 24             NSLog(@"str7有 www 的前缀。"); 25  } 26         BOOL hasSufFix = [str7 hasSuffix:@"heyang"]; 27         if (hasSufFix) { 28             NSLog(@"str7有 heyang 后缀。"); 29  } 30  } 31     return 0; 32 }


1 int main(int argc, const char * argv[]) {  2  @autoreleasepool {  3         //判断两个字符串是否相同
4         NSString *str1 = @"Hello";  5         NSString *str2 = @"Hello";  6         if ([str1 isEqualToString:str2]) {  7             NSLog(@"两个字符是一致的。");  8         }else{  9             NSLog(@"不一致!"); 10  } 11
12         //比较字符串 13         //NSComparisonResult需要自己去查阅相关的资料 14
15         //分割,按照指定字符分割字符串
16         NSString *str3 = @"a,b,c,d,e,f,g"; 17         NSArray *strArray = [str3 componentsSeparatedByString:@","]; 18         for(NSString *str in strArray){ 19             NSLog(@"str = %@",str); 20  } 21         /*验证正则表达式失败 22  NSString *str4 = @"1+2-3/9"; 23  NSArray *strArray2 = [str4 componentsSeparatedByString:@"[\+\-\*\/]"]; 24  for(NSString *str in strArray2){ 25  NSLog(@"str = %@",str); 26  } 27         */
28         //按照范围截取字符串,注意这里是结构体实例,所以不需要指针
29         NSRange range = NSMakeRange(1, 5);//前面是截取的起点,后面是长度,于是截取的是1~4
30         NSString *str5 = [str3 substringWithRange:range]; 31         NSLog(@"str5 = %@",str5); 32         //从某一位开始截取后面的字符串
33         NSString *str6 = [str3 substringFromIndex:2]; 34         NSLog(@"str6 = %@",str6); 35         //从开始截取到某一位
36         NSString *str7 = [str3 substringToIndex:2]; 37         NSLog(@"str7 = %@",str7); 38
39         //将字符串拆分为每一个字符
40         for (int i = 0; i<[str3 length]; i++) { 41             NSLog(@"%c ",[str3 characterAtIndex:i]); 42  } 43  } 44     return 0; 45 }




这是NSRange的源码,NSRange不是一个类,而是一个结构体,所以创建一个结构体就不能用指针,然后注意创建这个NSRange方法就是调用NSMakeRange( int , int )方法。

1 int main(int argc, const char * argv[]) {  2  @autoreleasepool {  3         //查找
4         NSString *str1 = @"ab cd ef gh ij ab";  5         //查找指定字符串的位置
6         NSRange range1 = [str1 rangeOfString:@"ab"];  7         NSLog(@"%ld 和 %ld",range1.location,range1.length);  8
9         //替换
10         NSString *str2 = @"Hello ios,Hello heyang"; 11         //替换某一个范围的内容
12         NSString *str3 = [str2 stringByReplacingCharactersInRange:NSMakeRange(6, 3) withString:@"android"]; 13         NSLog(@"%@",str3); 14         //指定字符串替换源字符串中的字串,前面一个参数是要被替换的内容,后一个参数是替换后的内容
15         NSString *str4 = [str2 stringByReplacingOccurrencesOfString:@"Hello" withString:@"你好"]; 16         NSLog(@"%@",str4); 17
18         //读取文件 19         //文件来源:1.本地文件 2.网络文件 20         //路径类
21         NSString *strurl = @"http://www.cnblogs.com/goodboy-heyang/p/4659795.html"; 22         NSString *strurl2 = @"/Users/HeYang/Desktop/Hello.txt"; 23         //网络路径
24         NSURL *httpurl = [NSURL URLWithString:strurl]; 25         //本地路径 26 // NSURL *fileurl = [NSURL fileURLWithPath:strurl2];读取本地路径可以不需要URL路径类,直接用路径字符串就可以了 27         //读取网络数据
28         NSString *httpstr = [NSString stringWithContentsOfURL:httpurl encoding:NSUTF8StringEncoding error:nil]; 29         NSLog(@"%@",httpstr); 30         //读取本地文件
31         NSString *filestr = [NSString stringWithContentsOfFile:strurl2 encoding:NSUTF8StringEncoding error:nil]; 32         NSLog(@"%@",filestr); 33
34         //写入文件
35         NSString *str5 = @"Hello developer"; 36         BOOL isok = [str5 writeToFile:@"/Users/HeYang/Desktop/Demo.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil]; 37         if (isok) { 38             NSLog(@"文件写入成功~"); 39         }else{ 40             NSLog(@"文件写入失败~"); 41  } 42  } 43     return 0; 44 }


实战演练:查找天气预报城市列表的某一个城市:"玉山"以及它在城市列表中的序号。天气预报城市列表的网址:http://api.k780.com:88/?app=weather.city&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

要求:两种方式:1⃣️本地文件查找2⃣️网络数据加载后查找

1⃣️本地文件查找方式:

先通过这个城市列表的网址获取所有关于城市的列表数据,然后复制粘贴到新建的纯文本记事本上,保存到桌面上,文件名为:file.txt



然后通过应用前面的基础:

1 #import <Foundation/Foundation.h>
2
3 int main(int argc, const char * argv[]) {  4  @autoreleasepool {  5         //路径,在桌面创建一个file.txt纯文本,然后通过终端可以获取完整路径
6         NSString *filepath = @"/Users/HeYang/Desktop/file.txt";  7         //读取本地文件数据存储在一个NSString对象中:
8         NSString *filestr = [NSString stringWithContentsOfFile:filepath encoding:NSUTF8StringEncoding error:nil];  9         NSRange range = [filestr rangeOfString:@"玉山"]; 10         NSLog(@"%ld 和 %ld",range.location,range.length); 11         NSRange findrange = NSMakeRange(range.location-33, 76); 12         NSString *findstr = [filestr substringWithRange:findrange]; 13         NSLog(@"%@",findstr); 14
15  } 16     return 0; 17 }


运行结果:



2⃣️网络数据加载后查找

开始出现了错误。



纠正之后:





1 int main(int argc, const char * argv[]) {  2  @autoreleasepool {  3         //获取网络路径
4         NSString *strurl = @"http://api.k780.com:88/?app=weather.city&&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json";  5         NSURL *url = [NSURL URLWithString:strurl];  6
7         NSString *httpstr = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];  8         //然后是查找“玉山”
9         NSRange range = [httpstr rangeOfString:@"玉山"]; 10         NSLog(@"%ld 和 %ld",range.location,range.length); 11
12         //然后是查找"玉山"的前后全面信息,这个需要不断更改range的起点位置和长度 13         //纠正一下,这里虽然目的是查找,但是实际上是截取目标位置和长度的字符串,所以用的是截取方法
14         NSRange range1 = NSMakeRange(range.location-33, 76); 15         NSString *findstr = [httpstr substringWithRange:range1]; 16         NSLog(@"%@",findstr); 17  } 18     return 0; 19 }


运行结果是:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: