KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm working on an app where I wanna show images, nearly as big as screensize, in a UITableView with custom cells. The Images are loading good, a bit slow but they load, but when I scroll in the TableView they appear in the wrong Cell (for example Image1 in Cell5 where Image5 is supposed to appear) after 1 or 2 seconds the correct image appears. In Order not to have to many datatraffic I thought about a "cache"-like URL/Image storage like this: - (id) init { if (self = [super init]) { self.cacheStoreDictionary = [NSMutableDictionary new]; } return self; } - (void) startLoadingImageWithUrl:(NSString *)urlString forItem:(id)item { if (self.cacheStoreDictionary[urlString]) { UIImage *image = self.cacheStoreDictionary[urlString]; [self.delegate lcCachedImageLoader:self didLoadImage:image forItem:item wasCacheHit:YES]; } else { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{ NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:urlString]]; UIImage *image = [UIImage imageWithData:data]; dispatch_async(dispatch_get_main_queue(), ^{ [self.cacheStoreDictionary setObject:image forKey:urlString]; [self.delegate lcCachedImageLoader:self didLoadImage:image forItem:item wasCacheHit:NO]; }); }); } } The URL and the rest of the data I need I'm loading via AFNetwork like this: - (void)fetchTicketEvents { // Login URL NSURL *eventsURL = [NSURL URLWithString:TH_API_BASEURL]; AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:eventsURL]; httpClient.parameterEncoding = AFJSONParameterEncoding; // Set request parameters NSDictionary *params = nil; NSMutableURLRequest *request = [httpClient requestWithMethod:@"GET" path:TH_API_PATH_TICKET_EVE
Tags (comma-separated)
Save Edits
Cancel