A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 344398083 中级黑马   /  2015-12-30 21:00  /  703 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

OC的Foundation框架 Foundation框架:

一:Foundation框架是Mac\iOS中其他框架的基础,内部包含了开发中常用的数据类型如:结构体、枚举和一些类
     如果我们想使用Foundation框架中的功能,只要包含Foundation框架中的主头文件即可。
#import <Foundation/Foundation.h>
该框架提供了非常好用的类,都以NS开头,比如
NSString:字符串
NSArray:数组
NSDictionary:字典
NSDatte:日期
NSData:数据
NSNumber:数字

二:NSString
    1,NSString的创建形式:
  

        //------------ 第一种创建形式,最直接的形式
        // 注意:这样创建的字符串存储在常量区(也就是内存只分配一次,以后要调用该字符串,直接从常量区读取
//        NSString *str1 = @"你好China";
//        NSString *str2 = @"你好China";
//        NSLog(@"str1 = %p, str2 = %p", str1, str2);
        /*
         str1 = 0x100001040, str2 = 0x100001040
         可以看到打印结果,证明这样直接创建的字符串存储在常量区
        */
        
        //------------ 第二种创建形式,格式化的方法,通过NSString类的类方法
//        NSString *str1 = [NSString stringWithFormat:@"%@", @"你好China"];
//        NSString *str2 = [NSString stringWithFormat:@"%@", @"你好China"];
//        NSLog(@"str1 = %p, str2 = %p", str1, str2);
        /*
         str1 = 0x100109ba0, str2 = 0x100103580
         可以看到这样创建的字符串地址不相同,因为类方法的本质是通过[[NSString alloc] init]创建的因此每次创建都会分配内存地址
         */
        
        //------------ 第二种创建形式,格式化的方法,通过对象方法创建
//        NSString *str1 = [[NSString alloc] initWithFormat:@"%@", @"你好China"];
//        NSString *str2 = [[NSString alloc] initWithFormat:@"%@", @"你好China"];
//        NSLog(@"str1 = %p, str2 = %p", str1, str2);
        /*
         str1 = 0x100109bc0, str2 = 0x1001035a0
         这样创建地址当然也不会相同
         */

    2,注意: 对于直接写的字符串比如:@“abc”,这种叫做字符串常量。
字符串常量,保存在内存的常量区。对于相同的字符串常量,常量区只保存一份。所以上面的s1和s2看似是两个变量,但实际上都是指向了常量区的同一个字符串对象。

三:字符串在文本中的读取操作
      NSString读入取出字符串的操作
      

        // 1,读出文本文件中的内容
        
        // 第一种方式:stringWithContentsOfFile
        /* 参数:1,文件的全路径,OC中的File都是指文件的全路径
                2, encoding:指文件读出时按什么格式的编码读取。(要想读取不出现乱码,那么写入时字符串用什么编码读取就用什么编码,一般计算机写入编码都是UTF-8
                3,error:指指向对象指针的地址,如果读取失败,系统会修改error的错误信息
        */
//        NSError *err = nil;
//        NSString *text = [NSString stringWithContentsOfFile:@"/Users/ll/Desktop/text.txt" encoding:NSUTF8StringEncoding error:&err];
//        if (err!=nil) {
//            NSLog(@"读取失败");
//            NSLog(@"%@", [err localizedDescription]);
//        }else{
//            NSLog(@"%@", text);
//        }
        
        // 第二种方式:stringWithContentsOfURL
//        NSError *err = nil;
//        
//        // 注意:1,用URLWithString读取本地文件内容的话必须加:file://
         //        2,通过URLWithString这种方式创建url的时候,如果路径中有中文字符则,报错!
         //        3,如果路径中有中文,则使用另外一个方法来创建:
        //        NSURL *url = [NSURL fileURLWithPath:@"/Users/ll/Desktop/资料/text.txt"];
        
//        NSURL *url = [NSURL URLWithString:@"file:///Users/ll/Desktop/text.txt"];
//        NSString *text = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&err];
//        if (err!=nil) {
//            NSLog(@"读取失败");
//            NSLog(@"%@", [err localizedDescription]);
//        }else{
//            NSLog(@"%@", text);
//        }
        
        // 2,写入到文件内容
        
        // --------------第一种方式:writeToFile
        /*
            参数:atomically的YES表示当文件写入失败后就不创建文件
                 atomically的NO表示表示当文件写入失败后也可以创建文件
         */
//        NSString *text = @"hello0, 中国";
//        NSError *err = nil;
//        [text writeToFile:@"/Users/ll/Desktop/text.txt" atomically:YES encoding:NSUTF8StringEncoding error:&err];
//        if (err!=nil) {
//            NSLog(@"写入失败");
//            NSLog(@"%@", [err localizedDescription]);
//        }else{
//            NSLog(@"写入成功");
//        }
        
        //--------------第二种写入方法  writeToURL
//        NSString *text = @"hello0, 中国";
//        NSError *err = nil;
//        NSURL *url = [NSURL URLWithString:@"file:///Users/ll/Desktop/text.txt"];
//        [text writeToURL:url atomically:YES encoding:NSUTF8StringEncoding error:&err];
//        if (err!=nil) {
//            NSLog(@"写入失败");
//            NSLog(@"%@", [err localizedDescription]);
//        }else{
//            NSLog(@"写入成功");
//        }

         

     补充:NSURL
     URL:全称是Uniform Resource Locator(统一资源定位符)
     URI:全称统一资源标示符
     例如:http://www.baidu.com/m/a.png;
     URL——>http://www.baidu.com/m/a.png;
     URI——>a.png
     URL的格式:
基本URL包含协议、主机域名(ip地址)、资源路径
可以简单认为URL==协议头:// 主机名/路径
    常见的URL协议头
     1>http\https:超文本传输协议
     2>文件传输协议
     3>本地文件
     这些协议都是通信协议,协议约束了通信双方必须遵守的规则,只要遵守了这个规则,双方就能识别通信。(就如同战争时期的无线电密码,只要双方约束好了密码本,就可以知道密文内容)

方法网络资源的时候中文也需要先进行url encode编码

注意::1,用URLWithString读取本地文件内容的话必须加:file://
            2,通过URLWithString这种方式创建url的时候,如果路径中有中文字符则,报错!

           3,如果路径中有中文,则使用另外一个方法来创建:

           NSURL *url = [NSURL fileURLWithPath:@"/Users/ll/Desktop/资料/text.txt”]; 而fileURLWithPath方法中不需要加file://

四:NSString中的一些方法

    1,大小写处理方法

  


        // ============== 一:NSString大小写处理方法
        
        // 1,大写转小写操作
//        NSString *str = @"heLLo, wORld"; // str指向的字符串在常量区
//        NSLog(@"str = %p", str);
//        str = [str lowercaseString]; // str指向的字符串在堆区
//        NSLog(@"str = %p", str);
//        NSLog(@"%@", str);
        // 注意上面打印两个地址不同,说明NSString字符串是不可变字符串,对象方法返回一个新的地址
        
        // 2,小写转大写
//        NSString *str = @"heLLo, wORld";
//        str = [str uppercaseString];
//        NSLog(@"%@", str);
        
        // 3,首字母变大写,其他字母变小写
//        NSString *str = @"heLLo, wORld";
//        str = [str capitalizedString];
//        NSLog(@"%@", str); // 结果:Hello, World
        2:NSString的比较方法




        // 1,比较两个字符串中的内容是否相同
//        NSString *str1 = @"ABC";
//        NSString *str2 = @"ABC";
//        BOOL b = [str1 isEqualToString:str2];
//        NSLog(@"%d", b); // 结果 :1;
        
        // 2,比较两个字符串的大小,注意:这个比较字符串中每一个字符的ACSII码值的大小
//        NSString *str1 = @"NBA";
//        NSString *str2 = @"CBA";
//        NSComparisonResult result = [str1 compare:str2];
//        switch (result) {
//            case NSOrderedAscending: // 升序
//                NSLog(@"str1<str2");
//                break;
//            case NSOrderedSame:
//                NSLog(@"str1=str2");
//                break;
//            case NSOrderedDescending:  // 降序
//                NSLog(@"str1>str2");
//                break;
//        }
//        /**
//         *  注意:compare方法的返回值是一个枚举类型:NSComparisonResult
//                 它有三个枚举值分别是:NSOrderedAscending: // 升序
//                                   NSOrderedSame:// 相同
//                                   NSOrderedDescending:  // 降序
//         */
        
        // 3,也是比较字符串的大小,忽略字符串中的大小写进行比较:
        
//        NSString *str1 = @"NBA";
//        NSString *str2 = @"nba";
//        NSComparisonResult result = [str1 caseInsensitiveCompare:str2];
//        switch (result) {
//            case NSOrderedAscending: // 升序
//                NSLog(@"str1<str2");
//                break;
//            case NSOrderedSame:
//                NSLog(@"str1=str2");
//                break;
//            case NSOrderedDescending:  // 降序
//                NSLog(@"str1>str2");
//                break;
//        }3,NSString的搜索方法

1 个回复

倒序浏览
还没学到,帮顶
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马