iOS 本地写入、存储数据,沙盒机制

iOS 本地写入、存储数据,沙盒机制,第1张

iphone沙盒中有4个文件夹,documents、tmp、app、library。

(1)、定位Document 目录

(2)、定位Library 目录

(3)、定位Caches 目录,Caches 目录位于Library目录下

使用NSSearchPathForDirectoriesInDomains只能定位Caches、Library、Documents目录, tmp目录,不能按照此方法获得,此时可以采用NSHomeDirectory定位到应用程序主目录,也就是Document 的上一层目录:

NSString *temp = NSTemporaryDirectory()

获取沙盒根目录:NSHomeDirectory()

使用NSHomeDirectory()可以获取到沙盒的根目录,也就是Document的上一层。

利用NSHomeDirectory()我们可以获取沙盒中的任意文件的路径。

例如:获取tmp的路径如下所示:

如果创建文件夹,并创建子目录,如下:

关于目录/文件的其他 *** 作:

iOS本地数据保存有多种方式,归纳如下:

本章不仅是学习多种数据存储方式,也可学习到其他知识点,下面就让我们详细来看:

具体方法为:

第一步:获得文件即将保存的路径,并生成在该路径下的文件:

第二步:往文件中写入/读取:

方法一:

方法二:

方法三:

2.NSUserDefaults:是一个单例对象,在整个应用程序的生命周期中都只有一个实例。用来保存应用程序设置和属性、用户保存的数据。存储在沙盒的Library/Preference中,NSUserDefaults可以存储的数据类型包括:NSData、NSString、NSNumber、NSDate、NSArray、NSDictionary。写入和读取都比较简单,如下:

写入:

NSString *str = [userDefault objectForKey:@"zhigang"]

@interface Person : NSObject <NSCoding>//遵守NSCoding协议

@property (nonatomic,strong) NSString *name

@property (nonatomic,assign) NSInteger age

@end

解档 *** 作:

同样调用NSCoder子类NSKeyedArchiver的方法unarchiveRootObject:toFile: 即可

[NSKeyedUnarchiver unarchiveObjectWithFile:path]

NSMutableData *data = [NSMutableData data]

NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc]initForWritingWithMutableData:data]

[archiver encodeObject:person forKey:@"person"]

[archiver encodeObject:bir forKey:@"bir"]

// 存档完毕(一定要调用这个方法)

[archiver finishEncoding]

[data writeToFile:path atomically:YES]

NSData *undata = [NSData dataWithContentsOfFile:path]

NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc]initForReadingWithData:data]

[unarchiver decodeObjectForKey:@"person"]

[unarchiver decodeObjectForKey:@"bir"]

// 恢复完毕

[unarchiver finishDecoding]


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

原文地址: https://outofmemory.cn/sjk/6699541.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存