Rya*_*ick 8 cocoa objective-c ios nscache
我正在尝试使用NSCache将PNG存储为NSData.每当我尝试从缓存中取出一个缓存,无论缓存是否为空,我得到:
2012-10-26 09:49:28.860 SledMap [55917:11503] *由于未捕获的异常'NSUnknownKeyException'终止应用程序,原因:'[valueForUndefinedKey:]:此类不是密钥值0_0_5的编码兼容.
如果我完全保留代码,但将NSCache更改为NSMutableDictionary,它可以正常工作.
我宣布我的缓存:
@property (nonatomic, strong) NSCache *tileCache;
Run Code Online (Sandbox Code Playgroud)
分配它(在viewDidLoad中):
self.tileCache = [[NSCache alloc] init];
self.tileCache.delegate = self;
Run Code Online (Sandbox Code Playgroud)
添加内容到缓存:
NSString *key = [NSString stringWithFormat:@"%i_%i_%i",x,y,endLevel];
NSData *pngData = [NSData dataWithData:UIImagePNGRepresentation(image)];
[self.tileCache setObject:pngData forKey:key];
Run Code Online (Sandbox Code Playgroud)
然后当我把它拿回来时,我得到了上述错误.
NSString *key = [NSString stringWithFormat:@"%i_%i_%i",x,y,endLevel];
NSData *tile = [self.tileCache valueForKey:key]; //This is the line it crashes on
Run Code Online (Sandbox Code Playgroud)
如果它是空的,我希望它只返回nil,这就是当我将self.tileCache设为NSMutableDictionary而不是NSCache时会发生的事情.此外,在调试区域,它说:
tile = NSData * 0x0134dc59 <Variable is not NSData>
Run Code Online (Sandbox Code Playgroud)
如果我传入NSString,它会做同样的事情,并且变量不是NSString.
另外,我可以硬编码key为"A",并尝试以相同的结果再次访问为"A".
有任何想法吗?
| 归档时间: |
|
| 查看次数: |
1802 次 |
| 最近记录: |