iOS 中将 接口返回数据 缓存到本地
时间: 2023-09-15 13:17:32 浏览: 249
iOS 缓存机制
在 iOS 中,你可以使用以下两种方式将接口返回的数据缓存到本地:
1. 使用 NSUserDefaults
如果你的数据量比较小,可以将接口返回的数据存储到 NSUserDefaults 中。NSUserDefaults 是一个轻量级的本地存储工具,可以用来存储简单的用户配置信息和小数据量的数据。
你可以将接口返回的数据转换成 NSData 类型,然后存储到 NSUserDefaults 中。示例代码如下:
```objective-c
// 将接口返回的数据转换成 NSData 类型
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:responseObject];
// 存储到 NSUserDefaults 中
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"cachedData"];
[defaults synchronize];
```
在读取数据时,你可以使用如下代码:
```objective-c
// 从 NSUserDefaults 中读取数据
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"cachedData"];
// 将 NSData 类型转换成 NSDictionary 类型
NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
```
2. 使用文件缓存
如果你的数据量比较大,可以将接口返回的数据存储到文件中。在读取数据时,你可以从文件中读取数据。示例代码如下:
```objective-c
// 将接口返回的数据转换成 NSData 类型
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:responseObject];
// 存储到文件中
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [cachePath stringByAppendingPathComponent:@"cachedData"];
BOOL success = [data writeToFile:filePath atomically:YES];
if (!success) {
NSLog(@"Error writing to file");
}
```
在读取数据时,你可以使用如下代码:
```objective-c
// 从文件中读取数据
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
NSString *filePath = [cachePath stringByAppendingPathComponent:@"cachedData"];
NSData *data = [NSData dataWithContentsOfFile:filePath];
// 将 NSData 类型转换成 NSDictionary 类型
NSDictionary *dict = [NSKeyedUnarchiver unarchiveObjectWithData:data];
```
注意:无论你选择哪种方式,都需要注意缓存的有效期。在读取数据时,你需要判断缓存是否过期,如果过期了,就需要重新从接口获取数据。
阅读全文