如何在视图控制器中添加和检索NSDictionary中的数据

时间:2011-02-20 03:06:27

标签: objective-c nsdictionary

我正在尝试使用NSDictionary在视图控制器中缓存一些图像,但我没有太多运气。

对于初学者我的.h看起来像这样

...
  NSDictionary *images;
}

@property (nonatomic, retain) NSDictionary *images;

在我的.m中合成属性并尝试按如下方式添加图像:

[self.images setValue:img forKey:@"happy"];

以后我尝试按键

抓图像
UIImage *image = [self.images objectForKey:@"happy"];
    if (!image) {
      NSLog(@"not cached");
    }else {
      NSLog(@"had cached img %@", image);
    }

然而每次我NSLog字典它都是null。如果我@synthesize属性我应该准备开箱即用吗?或者我没有正确地将它添加到词典中?

提前谢谢

1 个答案:

答案 0 :(得分:5)

Synthesizing没有实例化变量,所以你仍然需要在某个时候分配+ init。

但是如果您想在创建后将对象添加到字典中,则需要使用NSMutableDictionary

然后在viewDidLoad中使用以下内容对其进行alloc + init:

self.images = [[[NSMutableDictionary alloc] initWithCapacity:10] autorelease];

然后要设置值,请使用setObject:forKey:(不是setValue:forKey:):

[images setObject:img forKey:@"happy"];

请记住在dealloc中发布字典。