我有一个应用程序,我想创建一个存储密钥和值的临时缓存。我做了以下
我的代码是:IN appDelegate.h
@property (strong, nonatomic) NSMutableDictionary *articleCache;
在appDelegate.m
@synthesize articleCache;
我在viewController.m中调用它 在这里,我需要存储数据,以便仅在应用程序终止时清除它,否则可以在应用程序的任何位置访问。 每次我访问一篇文章时,我都会将它添加到数组中,这样下次我就不必从网络中获取它,从而加快了这个过程。
问题是,当我设置临时NSMutableDictionary时,内容被添加但是对于checkCache.articleCache,我得到nil。
#define DELEGATE ((AppDelegate*)[[UIApplication sharedApplication]delegate])
这是我的viewDidLoad方法:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
//[self loadfeeds];
[self.activityIndi startAnimating];
AppDelegate *checkCache = DELEGATE;
NSString *link = self.webUrl;
//check if the article is already opened and cached before
if([[checkCache.articleCache allKeys] containsObject:link])
{
NSLog(@"Key Exists");
NSString *contents = [checkCache.articleCache valueForKey:link];
[self loadDataOnView:contents];
}
else
{
NSOperationQueue* aQueue = [[NSOperationQueue alloc] init];
[aQueue addOperationWithBlock:^{
NSLog(@"Key not Exists");
[self startParsing];
}];
}
}
在最后的解析器方法中,我执行以下操作,即存储文章.. 但如果我直接将它添加到checkCache.articleCache没有添加任何内容我该怎么办?但它被添加到临时..我是否正确访问articleCache ??
AppDelegate *checkCache = DELEGATE;
NSMutableDictionary *temp = [[NSMutableDictionary alloc] init];
[checkCache.articleCache setObject:Content forKey:url];
[temp setObject:Content forKey:url];
那我怎么解决呢? 或建议我如何使用NSCache来解决同样的问题。非常感谢。 这可能是一个愚蠢的问题,但我对ios很感谢。
答案 0 :(得分:1)
在App代理中:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.articleCache = [NSMutableDictionary new];
return YES;
}
当你必须在缓存中设置对象时。
AppDelegate *checkCache = DELEGATE;
[checkCache.articleCache setObject:obj forKey:@"Key1"];
要取回物品:
AppDelegate *checkCache = DELEGATE;
id obj = [checkCache.articleCache objectForKey:@"Key1"];
虽然有更好的方法可以完成这项工作。