数据存储混乱到nscache

时间:2013-08-19 16:38:30

标签: ios nsdata nscache

我知道我在这里犯了一个错误因为我无法运行我试图构建的项目而且我在这里尝试做的是从xml获取解析数据然后将其保存到nsdata中然后放入所有这些数据进入缓存,所以当我运行我的项目时,它并不总是加载数据。

@implementation ViewController
{    
    NSCache *myCache;    
}


- (void)viewDidLoad
{    
    myCache = [[NSCache alloc] init];
}

//saving data into cache
NSString *imageURL = [currentData.imageLink];
NSURL *url = [NSURL URLWithString:imageURL];
NSData *data = [NSData dataWithContentsOfURL:url];
data = [imagesCache objectForKey:@"KEY"];
[imagesCache setObject:imageLinks forKey:@"KEY"];

2 个答案:

答案 0 :(得分:1)

一些事情:

  1. 数据下载应在后台线程上完成。
  2. 最好在缓存中拥有自己的对象,该对象应下载图像并缓存图像并将图像保存到磁盘。清除缓存后,应删除映像,然后根据需要从磁盘重新加载。
  3. 此代码:

    NSData *data = [NSData dataWithContentsOfURL:url];
    data = [imagesCache objectForKey:@"KEY"];
    [imagesCache setObject:[NSData dataWithContentsOfURL:url] forKey:@"KEY"];
    
  4. 下载日期,将其抛弃并将其替换为缓存中的任何内容,然后使用其他内容更新缓存。它应该更像是:

    [imagesCache setObject:imageLinks forKey:@"KEY"];
    

    对于第2点,您的对象应确认为NSDiscardableContent

答案 1 :(得分:-1)

NSCache不会将数据保存在磁盘中,仅保存在内存中。

如果需要,它可以自动删除存储在其中的数据。

有关详细信息,请查看here