我正在尝试将从外部服务获取的图像添加到 NSMutableDictionary 并看到奇怪的结果。这就是我正在做的事情:
- (void)fetchImages{
//Fetch Item Brand Images
//self.itemBrands is an NSArray of NSDictionaries
for (NSDictionary *itemBrand in self.itemBrands){
NSString *currentItemId = [itemBrand objectForKey:@"ITEM_ID"];
//Valid Item Id. This Log message is displayed
NSLog(@"Current Item Id: %@",currentItemId);
NSString *currentItemImageUrl = [[IMAGE_URL stringByAppendingString:currentItemId] stringByAppendingString:@".png"];
//Image URL is valid. This log message is displayed
NSLog(@"Current Image URL: %@",currentItemImageUrl);
NSURL *url = [NSURL URLWithString:currentItemImageUrl];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *image = [UIImage imageWithData:data];
if (image == nil){
//This log message is displayed when image is not present
NSLog(@"Image not Present 1");
}else{
//This log message is displayed when image is present
NSLog(@"Image Present 1");
[self.itemBrandImages setObject:image forKey:currentItemId];
}
}
//This for loop is not being executed at all. No log messages displayed.
for(id key in self.itemBrandImages){
NSLog(@"Current Item Id2: %@",key);
if ([self.itemBrandImages objectForKey:key] == nil){
NSLog(@"Image Not Present 2");
}else{
NSLog(@"Image Present 2");
}
}
}
我在 self.itemBrandImages 上迭代的第二个 for 循环根本没有被执行。没有显示里面的任何日志消息。
在此处发布我的问题之前,我尝试了以下操作:
1)研究堆栈溢出中的类似问题,并结合其中之一的建议。建议是在 .m 文件的 init 方法中“执行 NSMUtableDictionary 的分配初始化”。这也没有帮助。
2)为了隔离问题,我什至尝试将一个简单的字符串添加到 NSMUtableDictionary 而不是图像,但即使这样似乎也没有保留。
我真的很困惑我在这里错过了什么或做错了什么。输入非常感谢。
谢谢,迈克·G