2010-12-09 110 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?)