我不知道如何使用NSCash ,但是我在阅读本主题后尝试过How to use NSCache但它没有用。
我遇到了这个问题原因:'-[NSCache setObject:forKey:cost:]:尝试插入 nil 值(键:indexPath)'
我做错了吗?
.h
@interface ViewController : UIViewController
@property (nonatomic, strong) NSMutableArray *jsonArray;
@property (nonatomic, strong) NSMutableArray *jsonArray1;
@property (nonatomic, retain) NSCache *Cache;
.m
- (void)viewDidLoad
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *response = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString"http://kalkatawi.com/jsonTest.php"]];
NSError *parseError = nil;
jsonArray = [NSJSONSerialization JSONObjectWithData:response options:NSJSONReadingAllowFragments error:&parseError];
jsonArray1 = [[NSMutableArray alloc] init];
Cache = [[NSCache alloc]init];
for(int i=0;i<[jsonArray count];i++)
{
NSString * city = [[jsonArray objectAtIndex:i] objectForKey"city"];
[jsonArray1 addObject:city];
}
dispatch_sync(dispatch_get_main_queue(), ^{
self.title = @"İller";
[self.mytable1 reloadData];
jsonArray1 = [Cache objectForKey"indexPath"];
[Cache setObject:jsonArray1 forKey"indexPath"];
});
});
}
Best Answer-推荐答案 strong>
您正在初始化 jsonArray1,就在设置它之前。
jsonArray1 = [Cache objectForKey"indexPath"]; // here jsonArray1 = nil; hence remove this line and run your code again. Yo
[Cache setObject:jsonArray1 forKey"indexPath"]; // hence you are setting nil value to this key "indexpath"
在那个教程中,他们说像
[Cache setObject:jsonArray1 forKey"indexPath"];
- 要检索值,请使用以下行。当您想使用该缓存值时,应使用此行
jsonArray1 = [Cache objectForKey"indexPath"];
在你的情况下,只需评论
jsonArray1 = [Cache objectForKey"indexPath"];
行并再次运行。它不会给出那个错误。
关于ios - 调用 NSCash 不起作用,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/18014080/
|