一、我们昨天讲了NSString类, 1.NSString类,它其实是存储我们的字符串对象,关于NSString类,你需要掌握如下几点,第一个: 1)NSString类的本质:是1个类 2)初始化:@“jack”,要知道,这个的本质是什么,这其实是个什么,是1个NSString对象 3)字符串的恒定性 4)NSString最常用的5个方法: i. stringWithFormat ii. length iii. characterAtIndex iv. isEqualToString v. strWithUTF8String 5)NSString的其他方法: i. str.UTF8String ii. writeToFile iii. stringWithContentsOfFile iv. URLWithString (这是URL的方法) v. stringWithContentsOfURL vi. writeToURL vii. compare viii. compare options:NSCaseInsensitiveSearch ix. compare options:NSNumericSearch x. hasPrefix xi. hasSuffix xii. rangeOfString xiii. NSMakeRange (这是Range的方法) xiv. substringFromIndex xv. substringToIndex xvi. substringWithRange xvii. stringByReplacingOccurrencesOfString xviii. str.intValue xix. stringByTrimmingCharactersInSet xx. uppercaseString xxi. lowercaseString xxii. stringByTrimmingCharacterInSet:[NSCharacterSet lowercaseLetterCharacterSet] xxiii. stringByTrimmingCharacterInSet:[NSCharacterSet uppercaseLetterCharacterSet] xxiv. stringByTrimmingCharacterInSet:[NSCharacterSet characterSetWithCharactersInString:@“jing”] xxv. appendString (这是NSMutableString的方法) xxvi. appendFormat (这是NSMutableString的方法) 2.NSMutableString类 1)NSMutableString类,是NSString类的子类 2)可变 3)使用场景:大批量的字符串拼接的时候 3.NSArray类 1)数组 2)特点: i. 只能存储OC对象 ii. 长度固定 3)创建 取出 遍历 其他的常用 4.NSMutableArray类 1)是NSArray类的子类 2)元素可以新增和删除 5.NSNumber类 二、NSArray的持久化 1.例如,我这儿有一个NSArray NSArray *arr = @[@“jack”,@“rose”,@“lili”,@“Lucy”]; for(NSString *str in arr) NSLog(@“%@”,str); 输出:jack rose lili Lucy 2.这样就可以把数组中的每一个元素的值输出来了吧, 但是有一个问题,我这个程序结束以后,这个数组中的元素,还在不在,不在了,我程序结束以后,这个数组还在不在,不在了, 那我就有一个想法了,我能不能把数组中的元素保存起来 3.将数组的信息(数组的元素的值)保存起来,保存在磁盘上,下次我程序再运行的时候,我再把它还原回来 数据持久化 数组对象有1个方法,叫做writeToFile [arr writeToFile:(nonnull NSString *) atomically: (BOOL)]; 这个方法做了什么事情,把这个arr数组写入到1个文件里面去 好,给个路径,/Users/Apple/Desktop/abc. 记住,如果是数组,这个后缀名,你给个plist /Users/Apple/Desktop/abc.plist plist文件,是1个属性列表文件, 这个atomically:需不需要先写入临时文件,如果成功,再移动道目标路径,给个NO NSLog(@“YES”); 打印1个YES吧 运行一下,在/Users/Apple/Desktop/路径下,出现了一个abc.plist文件, 打开看一下啊,双击 出来4个元素,上面还有一个Root,这个Root是个什么类型的,Array,那就说明咱们这个文件里保存的是1个数组,这个数组里面有几个元素,4个,哪4个元素, item 0 :就是第0个元素,第0个元素什么类型的,String类型的,值是什么啊,jack, item 1 : String类型的,值是rose item 2 : String类型的,值是lili item 3 : String类型的,值是Lucy 你看,它就用文件的方式,把它保存起来了 4.plist文件:属性列表文件 这个文件可以保存数组,把数组中的元素,保存在这个文件中 三、存起来之后,我能不能读出来呢,能不能把这个文件还原成1个数组呢 1.还原1个数组: NSArray *arr = [NSArray arrayWithContentsOfFile:(non null NSString *)]; 这个方法的名字叫做:arrayWithContentsOfFile 这个方法的签名如下: + (NSArray *)arrayWithContentsOfFile:(NSString *)file]; 是不是给它1个文件路径: [NSArray arrayWithContentsOfFile:@“/Users/Apple/Desktop/abc.plist”]; 这句话一执行,它就会把这个plist文件里面保存的数组还原回来,还原到这个arr数组里面去, for(NSString *str in arr){ NSLog(@“%@”,str); } 我输出一下,看看能不能输出出来 输出:jack rose lili Lucy 2.那我能不能把plist文件改一下,是不是本来有4个元素, 我在文件里加一个: item 4 : String类型的,lilei item 5 : String类型的,poly Ctrl + S 保存一下 这时候,我再读: 输出: jack rose lili Lucy lilei poly 3.所以,这个原理,是这样的: 1)第一步,将数组的信息存储到plist文件中,就会将数组的所有的元素存储到这个文件中,这个方法叫做writeToFile,这个方法的签名如下: - (BOOL)writeToFile:(NSString *)path atomically:(BOOL)useAuxiliaryFile; 这个方法的作用,就是将数组存进去 2)第二步,读出来,将plist文件中的数据还原为1个数组,这个方法叫做arrayWithContentsOfFile,这个方法的签名如下: + (nullable NSArray< ObjectType> *)arrayWithContentsOfFile:(NSString *)path; 这个nullable什么意思啊,它返回的值,可能为空,可能为nil, 如果你这个路径写错了,返回值就是nil了, 所以,你要判断它到底有没有读取成功,你就只需要判断一下, if(arr != nil){ NSLog(@“读取成功”); for(NSString *str in arr){ NSLog(@“%@”,str); } } else { NSLog(@“读取不成功”); } 读取成功之后,我就把它输出,就可以了, 就这两个方法,需要你掌握,因为怎么说呢,这个方法我们后面天天用, 为什么天天用,大家思考一下,我们用这两个方法,能够实现的功能是什么呢,是不是可以把程序运行期间的数据给它永久保存起来啊, 如果你像我们之前,都是用变量来保存数据的话,程序一运行完,是不是数据就没有了啊,如果我下次再想把那个数据再拿出来呢 所以,有些数据,我想永久保存,比如,我举个例子给你啊 我们要做一个聊天软件,我想把聊天记录永久保存起来,明白我的意思吧,你想想,按照我们之前的写法,我用个变量,是不是把聊天记录都保存在变量里面啊,或者放在数组里面啊,那么很明显啊,你程序一退出,聊天记录绝对没了啊,下次如果,你下次再执行程序的时候,可不可能把上次的那个聊天记录拿出来啊,不可能的啊,那怎么办, 对了,每次在你退出程序的时候,或者说,我每隔十分钟,或者每隔五分钟,或者说,你每发一条消息,我就把你发的这条消息,记录起来,存起来,用这种方式啊,存起来, 然后呢,下次我启动程序的时候,我怎么样,我再读出来,然后再还原回去,不就可以了嘛, 所以它最大的特点,在于持久化数据,可以把数据永久的保存下来