zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    一张图片入门Python
    4.1. 如何在Windows环境下开发Python
    你必须知道的EF知识和经验
    XUnit的使用
    如何使用NUnit
    Entity Framework 不支持DefaultValue
    Have You Ever Wondered About the Difference Between NOT NULL and DEFAULT?
    Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
    Entity Framework 与多线程
    sqlite中的自增主键
  • 原文地址:https://www.cnblogs.com/laugh/p/6370630.html
Copyright © 2011-2022 走看看