Как вы заполняете представление UIImage с ASIHTTPRequest, заданным @ 2x? - PullRequest
2 голосов
/ 19 марта 2011

Я пытался загрузить изображения с URL-адреса с помощью ASIHTTPRequest, но я всегда придумываю пустой UIImage. Я думаю, что это может иметь какое-то отношение к тому, что iOS автоматически выберет версию изображений с именем @ 2x или наоборот.

[ASIHTTPRequest setDefaultCache:[ASIDownloadCache sharedCache]];


NSString *url_string = [NSString stringWithFormat:@"http://173.246.100.185/%@", [eventDictionary objectForKey:kEventDescriptionImageURLKey]];
NSURL *url = [NSURL URLWithString:url_string];
__block ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDownloadCache:[ASIDownloadCache sharedCache]];
[request setCachePolicy:ASIAskServerIfModifiedCachePolicy|ASIFallbackToCacheIfLoadFailsCachePolicy];
[request setCacheStoragePolicy:ASICachePermanentlyCacheStoragePolicy];
[request setSecondsToCache:86400];
[request setDelegate:self];
[request setCompletionBlock:^{
    NSLog(@"Successful Update");
    [self makeAssignment];
}];
[request setFailedBlock:^{
    NSError *error = [request error];
    NSLog(@"%@", [error localizedDescription]);
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Update Failed"
                                                    message:[error localizedDescription] 
                                                   delegate:nil
                                          cancelButtonTitle:@"OK"
                                          otherButtonTitles:nil];
    [alert show];
    [alert release];
}];
[request startAsynchronous];
NSLog(@"%@", url_string);

Метод makeAssignment приведен ниже.

NSString *url_string = [NSString stringWithFormat:@"http://173.246.100.185/%@", [eventDictionary objectForKey:kEventDescriptionImageURLKey]];
NSURL *url = [NSURL URLWithString:url_string];
downloadedImage = [[UIImage alloc] initWithContentsOfFile:[[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:url]];
NSLog(@"%@", downloadedImage);
NSLog(@"%@", [[ASIDownloadCache sharedCache] pathToCachedResponseDataForURL:url]);

Ничто из того, что я делаю, включая присвоение имен images @ 2x на сервере или предоставление обеих версий, не заставляет его загружаться. Есть идеи? Кто-нибудь делал это раньше? Когда я загружаю их локально (из пакета), у меня не возникает никаких проблем.

Спасибо!

EDIT

Вот вывод журнала

2011-03-19 11: 46: 11.088 clv [82974: 207] Успешное обновление

2011-03-19 11: 46: 12,822 клв [82974: 207] http://173.246.100.185/ying_yang_concert@2x.png

2011-03-19 11: 46: 12.844 clv [82974: 207]>

2011-03-19 11: 46: 12.913 clv [82974: 207] Успешное обновление

2011-03-19 11: 46: 12.932 clv [82974: 207]

2011-03-19 11: 46: 12.932 clv [82974: 207] / Пользователи / jonathantpage / Библиотека / Поддержка приложений / iPhone Simulator / 4.3 / Приложения / A17C0938-D2ED-447C-BD17-94726C СерьезныеA66 / Библиотека / Кэши / ASIHTTPRequestCache / PermanentStore / FE05295C8CD7687DC7A505C9070B6FC7.png

Ответы [ 2 ]

0 голосов
/ 19 марта 2011

Так что получается, что все было хорошо. Что было не так, так это то, что блок завершения выполнялся после присвоения UIImageView. Поместив это в метод makeAssignment, все работает. Ранее я просто заполнял там UIImage, а затем назначал его UIImageView в главном потоке.

0 голосов
/ 19 марта 2011

Это не будет автоматическим @ 2x - если система не может найти изображение с добавленным к нему '@ 2x', она просто использует исходное изображение и масштабирует его.Если вы хотите это проверить, просто запустите приложение на симуляторе, используя режим отображения без сетчатки.

Если вы запустите свое приложение на симуляторе, вы можете просмотреть каталог кеша с помощью программы поиска, чтобы проверить ваши изображениятам, как вы ожидаете.В своем пользовательском каталоге вы должны перейти на ~/Library/Application Support/iPhone Simulator/[Your SDK version]/Applications/[Your app]/, чтобы попасть в изолированную программную среду приложения, и, вероятно, сформировать ее в каталоге библиотеки / кэша приложения.

Кроме того, вы регистрируете путь к кешу: что он выходиткак?Вы уверены, что это правильный путь?Опять же, если вы находитесь на симуляторе, вы можете быстро проверить это, пытаясь открыть путь в терминале / другом приложении.

Ничто в вашем коде, по крайней мере, не выглядит для меня особенно неправильно, поэтому создается впечатление, что что-то происходит с локальным путем к файлу.Возможно, вы могли бы опубликовать NSLogs, которые вы получаете на консоли.

...