objective-c – 将NSMutableArray写入文件并加载回来

objective-c – 将NSMutableArray写入文件并加载回来,第1张

概述我正在做一些关于写入加载文件的练习. 我创建了一个NSString,然后将其写入文件,然后再次加载NSString.简单. 我如何使用NSStrings的NSMutableArray,或者更好的我自己的类的NSMutableArray? #import <Foundation/Foundation.h>int main(int argc, const char * argv[]){ 我正在做一些关于写入和加载文件的练习.

我创建了一个Nsstring,然后将其写入文件,然后再次加载Nsstring.简单.

我如何使用Nsstrings的NSMutableArray,或者更好的我自己的类的NSMutableArray?

#import <Foundation/Foundation.h>int main(int argc,const char * argv[]){    @autoreleasepool {        // insert code here...        //write a Nsstring to a file        NSArray *paths = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,NSUserDomainMask,YES);        Nsstring *documentsDirectory = [paths objectAtIndex:0];        Nsstring *filePath = [documentsDirectory stringByAppendingPathComponent:@"file.txt"];        Nsstring *str = @"hello world";        NSArray *myarray = [[NSArray alloc]initWithObjects:@"ola",@"alo",@"hello",@"hola",nil];        [str writetofile:filePath atomically:TRUE enCoding:NSUTF8StringEnCoding error:NulL];        //load Nsstring from a file        NSArray *paths2 = NSSearchPathForDirectorIEsInDomains(NSdocumentDirectory,YES);        Nsstring *documentsDirectory2 = [paths2 objectAtIndex:0];        Nsstring *filePath2 = [documentsDirectory2 stringByAppendingPathComponent:@"file.txt"];        Nsstring *str2 = [Nsstring stringWithContentsOffile:filePath2 enCoding:NSUTF8StringEnCoding error:NulL];        NSLog(@"str2: %@",str2);    }    return 0;}

印刷:str2:你好世界

解决方法 如果你想把你的数组写成pList,你可以

// save itNSArray *myarray = @[@"ola",@"hola"];BOol success = [myarray writetofile:path atomically:YES];NSAssert(success,@"writetofile Failed");// load itNSArray *array2 = [NSArray arrayWithContentsOffile:path];NSAssert(array2,@"arrayWithContentsOffile Failed");

有关更多信息,请参阅“属性列表编程指南”中的Using Objective-C Methods to Read and Write Property-List Data.

但是,如果您希望保留对象的可变性/不变性(即精确的对象类型),并且打开保存更多对象类型的可能性,则可能需要使用存档而不是pList:

NSMutableString *str = [NSMutableString stringWithString:@"hello world"];NSMutableArray *myarray = [[NSMutableArray alloc] initWithObjects:str,nil];//save itBOol success = [NSKeyedArchiver archiveRootObject:myarray tofile:path];NSAssert(success,@"archiveRootObject Failed");//load Nsstring from a fileNSMutableArray *array2 = [NSKeyedUnarchiver unarchiveObjectWithfile:path];NSAssert(array2,@"unarchiveObjectWithfile Failed");

虽然我用数组说明了这个技术,但它适用于任何符合NSCoding的对象(包括许多基本的Cocoa类,如字符串,数组,字典,NSNumber等).如果你想让自己的类与NSKeyedArchiver一起工作,那么你也必须使它们符合NSCoding.有关更多信息,请参阅Archives and Serializations Programming Guide.

总结

以上是内存溢出为你收集整理的objective-c – 将NSMutableArray写入文件并加载回来全部内容,希望文章能够帮你解决objective-c – 将NSMutableArray写入文件并加载回来所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1006910.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存