2010-12-09 102 views
2

我是Objective-c的新手,并且混淆了为什么我的NSMutableDictionary没有保留信息。我声明我的变量在头文件:NSMutableDictionary不保留值

@interface view_searchResults : UIViewController <UITableViewDataSource, UITableViewDelegate> { 
    NSMutableDictionary *imageDicationary; 
} 

@property (nonatomic, retain) NSMutableDictionary *imageDictionary; 

然后在我的.m文件,我有以下几点:

@synthesize imageDictionary; 

-(UIImage *)getImageForURL:(NSURL*)url { 

    UIImage*image; 
    image = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]]; 
    [imageDictionary setObject:image forKey:@"test"]; 

    if([imageDictionary objectForKey:@"test"]){ 

     NSLog(@"Exists"); 

    } 

} 

显然有其他代码来支持这一点,但我可以证实,正在传递一个URL,并且该文件正在其他地方正确下载。另外,我可以确认这个函数正在执行,并且我没有在文档中的任何其他地方引用NSMutableDictionary。

谢谢!

回答

5

你在哪里创建你的NSMutable字典?如果这真的是所有的代码,你有你需要创建词典:

@implementation view_searchResults 
- (id) init;{ 
    self = [super init]; 
    if(self) { 
     imageDicationary = [NSMutableDictionary alloc] init]; // should also be released in dealloc. 
    } 
    return self; 
} 

如果是这样的错误,那么你是不是导致飞机坠毁的原因是因为在Objective-C是有效发送消息到零对象 - 它什么都不做。

+0

太棒了!非常感谢你。我认为最初确定它是足够的,但显然并非如此。从PHP到Objective-C,这是一条漫长的道路。再次感谢您的帮助! – 2010-12-09 18:07:30

1

你还没有告诉我们“Exists”NSLog是否被执行,你也没有返回图像。

换句话说,我不明白您的问题

0

imageDictionary被初始化? (alloc/init?)