我需要一个字典来保存有限数量的对象,这些对象需要通过互联网连接创建并缓存它们,以便在没有互联网连接时保持可用状态。
NSCache
似乎很理想,因为我可以指定限制,或者它会根据可用内存自动调整自身,但我无法将对象保存到NSUserDefaults
。如果我尝试这样的缓存,它适用于NSDictionary
:
+ (void)cacheUsers:(NSCache *)users {
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:users];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:kCacheID];
}
应用崩溃:[NSCache encodeWithCoder:]: unrecognized selector sent to instance
我应该在缓存之前将NSCache
转换为NSDictionary
,然后在检索时再次转换吗?或者有更好的方法来保存NSCache
?
答案 0 :(得分:0)
我假设您正在尝试使用自定义类对象保存数组, 为此,您需要在自定义类中实现名为“encodeWithCoder”的方法,以便将其保存到NSUserDefault。
对我而言,您不需要使用NSCache。
请参阅以下相关答案: https://stackoverflow.com/a/2315972/1982185
祝你好运!