• Objective-C加强2Foundation框架


    6.Foundation框架
      什么是框架
      众多功能API的集合

      Foundation框架的作用
        Foundation框架是MaciOS中其他框架的基础
        Foundation框架包含了很多开发中常用的数据类型:
          结构体
          枚举
          类

      如何使用Foundation框架
      要想使用Foundation框架中的功能,包含它的主文件即可
      #import <Foundation/Foundation.h>

    Foundation框架中的类
      Foundation框架提供了非常多好用的类, 比如
      NSString : 字符串
      NSArray : 数组
      NSDictionary : 字典
      NSDate : 日期
      NSData : 数据
      NSNumber : 数字

      Foundation框架中的类都是以NS为前缀(Next Step的缩写)
      乔布斯于1976年创立苹果公司
      乔布斯于1985年离开苹果公司, 创立NeXT公司, 开发了Next Step操作系统
      在开发Next Step操作系统过程中产生了Foundation框架
      1997年, 苹果公司收购NeXT公司, 乔布斯重返苹果公司(Mac系统就是基于Next Step系统)
      2007年, 苹果公司发布了iOS系统(iOS系统基于Mac系统)

    不小心修改了系统文件
      有时候会在不经意之间修改了系统自带的头文件, 比如NSString.h, 这时会出现以下错误:
      

      解决方案很简单, 只需要删除Xcode的缓存即可,

      缓存路径是 /Users/用户名/Library/Developer/Xcode/DerivedData  (默认情况下, 这是一个隐藏文件夹)

      要想看到上述文件夹, 必须在终端敲指令显示隐藏文件夹, 指令如下
        显示隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool true
        隐藏隐藏文件 : defaults write com.apple.finder AppleShowAllFiles –bool false
        (输入指令后, 一定要重新启动Finder)

    NSString
      什么是NSString
      一个NSString对象就代表一个字符串(文字内容)
      一般称NSString为字符串类

      右图中的文字内容普遍都是用NSString来表示的
      


    NSString的创建
      NSString的创建方式比较多
      最直接的方式(这是常量字符串)
        NSString *str = @"I'm in itcast.";

      格式化的方式
        NSString *str = [NSString stringWithFormat:@"My age is %d", 10];
        NSString *str = [[NSString alloc] initWithFormat:@"My age is %d", 10];

      从文件中读取
      从URL中读取

    从文件中读取 

      // 用来保存错误信息
      NSError *error = nil;
    
      // 读取文件内容
      NSString *str = [NSString stringWithContentsOfFile:@"/Users/mj/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&error];
    
      // 如果有错误信息
      if (error) {
          NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);
      } else { // 如果没有错误信息
          NSLog(@"读取成功, 文件内容是:
    %@", str);
      }
    

     从URL中读取

      // 用来保存错误信息
      NSError *error = nil;
    
      // 创建URL路径
      NSURL *url = [NSURL URLWithString:@"file:///Users/mj/Desktop/test.txt"];
    
      // 读取文件内容
      NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error];
    
      // 如果有错误信息
      if (error) {
          NSLog(@"读取失败, 错误原因是:%@", [error localizedDescription]);
       } else { // 如果没有错误信息
          NSLog(@"读取成功, 文件内容是:
    %@", str);
      }
    

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

      URL的格式
        基本URL包含协议、主机域名(服务器名称IP地址)、路径
        举例: http://ios.itcast.cn/ios/images/content_25.jpg
        可以简单认为: URL == 协议头://主机域名/路径

      常见的URL协议头(URL类型)
        httphttps :超文本传输协议资源, 网络资源
        ftp :文件传输协议
        file :本地电脑的文件

    URL的创建
      传入完整的字符串创建
      NSURL *url = [NSURL URLWithString:@"file:///Users/mj/Desktop/str.txt"];

      通过文件路径创建(默认就是file协议的)
      NSURL *url = [NSURL fileURLWithPath:@"/Users/mj/Desktop/str.txt"];

    NSString的存储
      可以将NSString存储到一个文件中
      NSString  *str = @"哇哈哈哈";
      [str writeToFile:@"/Users/mj/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];

      [str writeToURL:[NSURL URLWithString:@"/Users/mj/Desktop/str.txt"] atomically:YES encoding:NSUTF8StringEncoding error:nil];

    NSString的大小写处理
     - (NSString *)uppercaseString;
      全部字符转为大写字母

     - (NSString *)lowercaseString
      全部字符转为小写字母

     - (NSString *)capitalizedString
      首字母变大写,其他字母都变小写

    NSString的比较
      - (BOOL)isEqualToString:(NSString *)aString;
        两个字符串的内容相同就返回YES, 否则返回NO

      - (NSComparisonResult)compare:(NSString *)string;
        这个方法可以用来比较两个字符串内容的大小
        比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果
        NSComparisonResult是一个枚举,有3个值:
          如果左侧   > 右侧,返回NSOrderedDescending,
          如果左侧   < 右侧,返回NSOrderedAscending,
          如果左侧  == 右侧返回NSOrderedSame

      - (NSComparisonResult) caseInsensitiveCompare:(NSString *)string;
        忽略大小写进行比较,返回值与compare:一致

    NSString的搜索
      - (BOOL)hasPrefix:(NSString *)aString;
        是否以aString开头

      - (BOOL)hasSuffix:(NSString *)aString;
        是否以aString结尾

      - (NSRange)rangeOfString:(NSString *)aString;
        用来检查字符串内容中是否包含了aString
        如果包含, 就返回aString的范围
        如果不包含, NSRangelocationNSNotFound, length为0

    NSRange
      NSRangeFoundation框架中比较常用的结构体, 它的定义如下:


        typedef struct _NSRange {
            NSUInteger location;
            NSUInteger length;
        } NSRange;


      // NSUInteger的定义
      typedef unsigned int NSUInteger;

      NSRange用来表示事物的一个范围,通常是字符串里的字符范围或者数组里的元素范围

      NSRange有2个成员
        NSUInteger location : 表示该范围的起始位置
        NSUInteger length : 表示该范围内的长度

      比如@“I love iOS”中的@“iOS”可以用location为7,length为3的范围来表示

    NSRange的创建
      有3种方式创建一个NSRange变量
      方式1
        NSRange range;
        range.location = 7;
        range.length = 3;

      方式2
        NSRange range = {7, 3};
        或者
        NSRange range = {.location = 7,.length = 3};

      方式3 : 使用NSMakeRange函数
        NSRange range = NSMakeRange(7, 3);

    NSString的截取和替换
      - (NSString *)substringFromIndex:(NSUInteger)from;
        从指定位置from开始(包括指定位置的字符)到尾部

      - (NSString *)substringToIndex:(NSUInteger)to;
        从字符串的开头一直截取到指定的位置to,但不包括该位置的字符

      - (NSString *)substringWithRange:(NSRange)range;
        按照所给出的NSRange从字符串中截取子串

      - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement;
        用replacement替换target

    NSString与路径
      - (BOOL)isAbsolutePath;
        是否为绝对路径

      - (NSString *)lastPathComponent;
        获得最后一个目录

      - (NSString *)stringByDeletingLastPathComponent;
        删除最后一个目录    

      - (NSString *)stringByAppendingPathComponent:(NSString *)str;
        在路径的后面拼接一个目录
        (也可以使用stringByAppendingString:或者stringByAppendingFormat:拼接字符串内容)

    NSString与文件拓展名
      - (NSString *)pathExtension;
        获得拓展名

      - (NSString *)stringByDeletingPathExtension;
        删除尾部的拓展名

      - (NSString *)stringByAppendingPathExtension:(NSString *)str;
        在尾部添加一个拓展名

    NSString的其他用法
      - (NSUInteger)length;
        返回字符串的长度(有多少个文字)    

      - (unichar)characterAtIndex:(NSUInteger)index;
        返回index位置对应的字符

      转为基本数据类型
        - (double)doubleValue;
        - (float)floatValue;
        - (int)intValue;

      - (char *)UTF8String;
      转为C语言中的字符串

    NSString去除空格
      去除所有的空格
      [str stringByReplacingOccurrencesOfString:@" " withString:@""]

      去除首尾的空格
      [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

    NSMutableString
      NSMutableStringNSString的子类

      NSMutableStringNSString区别
        NSString是不可变的,  里面的文字内容是不能进行修改的
        NSMutableString是可变的, 里面的文字内容可以随时更改

      NSMutableString能使用NSString的所有方法

    NSMutableString的常用方法
      - (void)appendString:(NSString *)aString;
        拼接aString到最后面

      - (void)appendFormat:(NSString *)format, ...;
        拼接一段格式化字符串到最后面

      - (void)deleteCharactersInRange:(NSRange)range;
        删除range范围内的字符串

      - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;
        在loc这个位置中插入aString

      - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;
        使用aString替换range范围内的字符串

    NSArray
      什么是NSArray
      NSArray是OC中的数组类, 开发中建议尽量使用NSArray替代C语言中的数组

      C语言中数组的弊端
        int array[4] = {10, 89, 27, 76};
        只能存放一种类型的数据
        不能很方便地动态添加数组元素
        不能很方便地动态删除数组元素

      NSArray的使用注意
      只能存放任意OC对象, 并且是有顺序
      不能存储非OC对象, 比如intfloatdoublecharenumstruct等
      它是不可变的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面加元素

    NSArray的创建
      NSArray常见的创建方式有
        + (instancetype)array;
        + (instancetype)arrayWithObject:(id)anObject;
        + (instancetype)arrayWithObjects:(id)firstObj, ...;
        + (instancetype)arrayWithArray:(NSArray *)array;

        + (id)arrayWithContentsOfFile:(NSString *)path;
        + (id)arrayWithContentsOfURL:(NSURL *)url;

      可以将一个NSArray保存到文件中
        - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile;
        - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)atomically;


    NSArray的检索
      - (NSUInteger)count;
        获取集合元素个数

      - (id)objectAtIndex:(NSUInteger)index;
        获得index位置的元素

      - (BOOL)containsObject:(id)anObject;
        是否包含某一个元素

      - (id)lastObject;
        返回最后一个元素

      - (id)firstObject;
        返回最后一个元素


      - (NSUInteger)indexOfObject:(id)anObject;
        查找anObject元素在数组中的位置(如果找不到,返回-1)

      - (NSUInteger)indexOfObject:(id)anObject inRange:(NSRange)range;
        在range范围内查找anObject元素在数组中的位置

    NSArray的简写
      自从2012年开始, Xcode的编译器多了很多自动生成代码的功能, 使得OC代码更加精简
      
      数组的创建
        之前
        [NSArray arrayWithObjects:@"Jack", @"Rose", @"Jim", nil];

        现在
        @[@"Jack", @"Rose", @"Jim"];

      数组元素的访问
        之前
        [array objectAtIndex:0];
        现在
        array[0];

    NSArray给所有元素发消息
      - (void)makeObjectsPerformSelector:(SEL)aSelector;
      - (void)makeObjectsPerformSelector:(SEL)aSelector withObject:(id)argument;
      让集合里面的所有元素都执行aSelector这个方法

    NSArray遍历元素
      遍历, 就是将NSArray里面的所有元素一个一个取出来查看

      常见的遍历方式有
      普通遍历
        for (int i = 0; i<array.count; i++) {  }

      快速遍历
        for (id obj in array) {  }

      Block遍历
        [array enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
        
        }];

    NSArray与NSString
      - (NSString *)componentsJoinedByString:(NSString *)separator;
        这是NSArray的方法, 用separator作拼接符将数组元素拼接成一个字符串

      - (NSArray *)componentsSeparatedByString:(NSString *)separator;
        这是NSString的方法, 将字符串用separator作为分隔符切割成数组元素


    NSMutableArray
      什么是NSMutableArray
      NSMutableArrayNSArray的子类
      NSArray是不可的, 一旦初始化完毕后, 它里面的内容就永远是固定的, 不能删除里面的元素, 也不能再往里面添加元素
      NSMutableArray是可变的, 随时可以往里面添加更改删除元素

    NSMutableArray添加元素

      - (void)addObject:(id)object;
        添加一个元素

      - (void)addObjectsFromArray:(NSArray *)array;
        添加otherArray的全部元素到当前数组中

      - (void)insertObject:(id)anObject atIndex:(NSUInteger)index;
        在index位置插入一个元素

    NSMutableArray删除元素
      - (void)removeLastObject;
        删除最后一个元素

      - (void)removeAllObjects;
        删除所有的元素

      - (void)removeObjectAtIndex:(NSUInteger)index;
        删除index位置的元素

      - (void)removeObject:(id)object;
        删除特定的元素

      - (void)removeObjectsInRange:(NSRange)range;
        删除range范围内的所有元素

    NSMutableArray替换元素
      - (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject;
        用anObject替换index位置对应的元素

      - (void)exchangeObjectAtIndex:(NSUInteger)idx1 withObjectAtIndex:(NSUInteger)idx2;
        交换idx1和idx2位置的元素

    NSMutableArray的简写
      设置元素
      以前
      [array replaceObjectAtIndex:0 withObject:@"Jack"];

      现在
      array[0] = @"Jack";




    本人无商业用途,仅仅是学习做个笔记,特别鸣谢小马哥,学习了IOS,另日语学习内容有需要文本和音频请关注公众号:riyuxuexishuji
  • 相关阅读:
    mysql优化
    c语言学习的第10天
    学习c语言的第9天
    学习c的第8天
    学习c的第7天
    学习c的第6天2
    c语言学习的第6天
    sed命令实战
    grep命令实战
    c语言学习的第五天
  • 原文地址:https://www.cnblogs.com/laugh/p/6370630.html
Copyright © 2020-2023  润新知