OC语言-Foundation框架
OC语言-Foundation框架
盘盘的灰灰 发表于2年前
OC语言-Foundation框架
  • 发表于 2年前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

 

  • NSString是1个数据类型.保存OC字符串的.

             NSString的本质是1个类.既然是1个类.

             所以,最标准的创建NSString对象的方式:

             NSString *str1 = [NSString new];

             NSString *str2 = [[NSString alloc] init];

             NSString *str3 = [NSString string];

  • 当我们使用简要的创建字符串对象的时候.也就是使用1个OC字符串常量来初始化字符串指针的时候.

             这个字符串对象是存储在 常量区(数据段) 的.

             NSString *str = @"jack";

             当我们调用NSString的类方法来创建对象的时候.

             NSString *str =  [NSString stringWithFormar:@"jack"];

             NSString *str1 = [NSString new];

             创建的字符串对象是存储在堆区.

     
  • 1). 使用拼接的方式创建1个NSString对象.

             + (instancetype)stringWithFormat:(NSString *)format, ... 

    2). 得到字符串的长度.

             @property (readonly) NSUInteger length;

    3). 得到字符串中指定下标的字符.

             - (unichar)characterAtIndex:(NSUInteger)index;

             返回值是unichar类型的 要打印的话使用%C

    4). 判断两个字符串的内容是否相同.

             a. 能否使用 == 来判断两个OC字符串的内容是否相同.

             b. == 运算符的作用: 比较左右两边的数据是否相同.

                ->   10 == 10  这个时候直接比较的是左右两边的数据是否相同.

                ->   a == b   两边也可以写1个变量.这个时候比较是左右两边的变量的值是否相同.

                ->   如果两边是1个指针变量.那么比较的也是变量的值. 只不过指针变量的值是地址.

             c. 所以,如果我们要比较两个OC字符串的内容是否相同.不能使用 == 去比较.

                因为 == 比较的是字符串指针变量的值.而我们要比的是两个字符串指针指向的字符串对象的内容是否相同.

             c. 调用方法: 

                - (BOOL)isEqualToString:(NSString *)aString;

                就可以比较当前字符串对象和传入的字符串对象的内容是否相同.

    5). 将C语言的字符串转换为OC字符串对象.

             + (instancetype)stringWithString:(NSString *)string;

    6). 将OC字符串对象转换为C语言的字符串.

             @property (nullable, readonly) __strong const char *UTF8String

     

     
  • 1. 将字符串写入到指定的文件中.

         - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

    2. 将文件中的内容读取到字符串中.

         + (nullable instancetype)stringWithContentsOfFile:(NSString *)path encoding:(NSStringEncoding)enc error:(NSError **)error;

         nullable 代表返回的对象有可能是nil

    从指定资源路径读取文本内容.

             + (nullable instancetype)stringWithContentsOfURL:(NSURL *)url encoding:(NSStringEncoding)enc error:(NSError **)error;

             将字符串的内容写入到资源路径中.

             - (BOOL)writeToURL:(NSURL *)url atomically:(BOOL)useAuxiliaryFile encoding:(NSStringEncoding)enc error:(NSError **)error;

    字符串比较.

         - (NSComparisonResult)compare:(NSString *)string;

     判断字符串是否以指定的字符串开头

         - (BOOL)hasPrefix:(NSString *)str;

          判断字符串是否以指定的字符串结尾

             - (BOOL)hasSuffix:(NSString *)str;

        在主串中搜索子串.从前往后

            - (NSRange)rangeOfString:(NSString *)searchString;

        在主串中搜索子串.从后往前.

        NSString *str = @"i love itcast love!";

        NSRange range =  [str rangeOfString:@"love" options:NSBackwardsSearch];

  • NSRange结构体.

         1). 是Foundation框架中定义的1个结构体.

         NSRange range;

         这个结构体变量一般情况下用来表示1段范围.特别用在子串在主串中的范围表示.

        @"hahajackhehe" @"jack" 

         4  4

        NSRange range = {4, 4};

  • 字符串的截取.

         取到字符串中的1部分.

         - (NSString *)substringFromIndex:(NSUInteger)from; 从指定的下标出一直截取到最后.

         - (NSString *)substringToIndex:(NSUInteger)to; 从第0个开始截取指定的个数.

         - (NSString *)substringWithRange:(NSRange)range; 截取指定的1段范围.

  •  字符串的替换

         - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement 

  • 去掉字符串前后的空格.

         str =  [str stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];

         中间的空格无法去掉. 

  • 字符串的恒定性.

         一旦创建1个字符串对象,那么这个字符串对象的内容就无法更改, 当我们修改字符串的时候,其实是重新的创建了1个字符串对象.

  • NSMutableString

        1). 是Foundation框架中的1个类.从NSString继承.

            所以,NSMutableString对象是用来存储字符串数据的.    

        2). NSMutbaleString在父类NSString的基础之上的做扩展.

            存储在NSSMutableString对象中的字符串数据可以更改.具备可变性.

            直接可以改存储在NSMutableStirng对象中的字符串数据,不会新创建对象.

    往可变字符串对象中追加字符串.

             - (void)appendString:(NSString *)aString;  直接追加内容.

             - (void)appendFormat:(NSString *)format, ... 以拼接的方式往可变字符串对象中追加内容.

  • 创建NSMutableString对象的时候,记住下面这样的初始化方式是不行的.

            NSMutableString *str = @"jack";

            @"jack" 是1个NSString对象,是1个父类对象.

            而str指针是1个NSMutableString类型的 是1个子类类型的.       

            如果通过子类指针去调用子类独有的成员 就会运行错误.

     
  • NSArray 

特点:

         a. 只能存储OC对象.任意的OC对象 无法存储

         b. 长度固定. 一旦NSArray数组创建完毕之后,元素的长度固定,无法新增 无法删除元素.

         c. 每1个元素都是紧密相连的. 每1个元素仍然有自己的下标.

         d. 元素的类型是id类型的.

  •  

    最常用的创建NSArray数组的方式.

             + (instancetype)arrayWithObjects:(ObjectType)firstObj, ...

             NSArray *arr = [NSArray arrayWithObjects:@"jack",@"rose",@"lili",@"hanmeimei",nil];

             使用注意

             1). 只能存储OC对象.不能存储非OC对象.

             2). 将元素写完以后,最后要写1个nil 表示元素到此结束了.

  • 创建NSArray数组的简要方式.

             NSArray *arr = @[写上每1个元素的值用逗号分隔.];

             NSArray *arr = @[@"jack",@"rose",@"lili"];

             注意:  这种创建方式 不需要在最后加nil. 

  • 调用数组对象的对象方法来取出指定下标的元素的值.

            - (ObjectType)objectAtIndex:(NSUInteger)index;

     
  • NSArray数组的其他的常用方法

         1). 得到NSArray数组中的元素的个数.

             @property (readonly) NSUInteger count;

         2). 判断NSArray数组中是否包含指定的元素.

             - (BOOL)containsObject:(ObjectType)anObject;

         3). 取到NSArray数组中的第1个元素.

             @property (nullable, nonatomic, readonly) ObjectType firstObject

             与arr[0]的区别.

             如果数组中没有任何元素.arr[0]报错. firstObject取到nil 不报错.

         4). 取到NSArray数组中的最后1个元素.

             @property (nullable, nonatomic, readonly) ObjectType lastObject

         5). 查找指定的元素在NSArray数组中第一次出现的下标.

             - (NSUInteger)indexOfObject:(ObjectType)anObject;

             如果没有找到 返回的是NSUInteger的最大值.

     
  • NSArray与字符串的两个方法

         1). 将数组中的元素连接起来组成1个新的字符串.

             - (NSString *)componentsJoinedByString:(NSString *)separator

             参数: 连接符.

         2). 将字符串以指定的分隔符分成1个数组. 每1部分就是数组的1个元素.      

             - (NSArray<NSString *> *)componentsSeparatedByString:(NSString *)separator;

     
  • NSMutableArray相对于父类做的扩展:NSMutableArray数组的元素可以动态的新增和删掉.

             其他的用法均与NSArray一致.

             所以: NSArray数组一旦创建,其元素的个数就固定,无法新增删除.

                  NSMutableArray数组.元素可以新增 可以删除. 其他用法和父类一样.

     
  •  NSMutableArray *arr4 = [NSMutableArray arrayWithObjects:@"jack",@"rose",@"lili", nil];

         最容易犯错:这样写是不可以的

         NSMutableArray *arr5 = @[@"jack",@"rose",@"lili"];

         @[@"jack",@"rose",@"lili"];这是1个NSArray对象.

         arr5是1个子类指针. 子类指针指向父类对象的就有可能会出问题.

     
  • 如何往可变数组中新增元素.

         - (void)addObject:(ObjectType)anObject; 将传入的参数作为数组的元素添加进去.

     
  • 将另外1个数组中的每1个元素添加到可变数组中.

         - (void)addObjectsFromArray:(NSArray<ObjectType> *)otherArray;

     

  • 在可变数组中指定的下标出插入1个元素.

        - (void)insertObject:(ObjectType)anObject atIndex:(NSUInteger)index;

     

  • 删除可变数组中指定下标的元素.

        - (void)removeObjectAtIndex:(NSUInteger)index;

     

     删除可变数组中所有的指定的元素.

        - (void)removeObject:(ObjectType)anObject;

     

      删除指定范围中的所有指定元素.

        - (void)removeObject:(ObjectType)anObject inRange:(NSRange)range;

     

     删除最后1个元素 

        - (void)removeLastObject;

     

    删除所有的元素.

        - (void)removeAllObjects;

     
  • NSNumber是Foundation框架中定义好的1个类.这个类的对象的作用就是用来包装基本数据类型的.

         将基本数据类型存储到NSArray数组中的步骤.

         1). 先讲基本数据类型包装到NSNumber对象中.

         2). 再降NSNumber对象存储到NSArray数组中.

         NSNumber *number1 = [NSNumber numberWithFloat:10.1f];

         NSNumber *number2 = [NSNumber numberWithFloat:10.2f];

         NSNumber *number3 = [NSNumber numberWithFloat:10.3f]; 

         NSArray *arr = @[number1,number2,number3];

         for(NSNumber *num in arr)

         {

                NSLog(@"%f",num.floatValue);

         }

     

  • 创建NSNumber对象的简写方式:

         @10;  代表是1个NSNumber对象.这个对象中包装的是整形的10

               这个不是整形的10

         [NSNumber numberWithInt:10];

         包装注意:

         如果后面的数据是1个变量 那么这个变量就必须要使用小括弧括起来.

         @(10);

         int num = 10;

         @(num)

     

     
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 31
码字总数 24142
×
盘盘的灰灰
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: