zoukankan      html  css  js  c++  java
  • 《慕客网:IOS基础入门之Foundation框架初体验》学习笔记 <一>

    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 }

    运行结果是:

     
  • 相关阅读:
    hdu 1520
    poj 3468
    hdu 1698
    shell:实现linux服务器资源监控并发送告警邮件
    Tools:apache部署https服务
    自动化:客户端自动化工具比对
    python:爬虫获取淘宝/天猫的商品信息
    js:浏览器插件
    自动化:图像相似度比较,并标记不一样的地方
    Linux:常用命令【转载】
  • 原文地址:https://www.cnblogs.com/goodboy-heyang/p/4659795.html
Copyright © 2011-2022 走看看