Question

J'essaie d'utiliser l'appel AFNetworking UIImageView pour charger des images à partir d'une URL comme indiqué ci-dessous :

[self.image setImageWithURL:[NSURL URLWithString:feed.imageURL] placeholderImage:     [UIImage imageNamed:@"logo"]];

L'image d'espace réservé apparaît toujours, mais l'image réelle de "feed.imageURL" ne le fait jamais.J'ai vérifié que l'URL est réellement correcte.Je l'ai même codé en dur pour m'en assurer, et toujours rien.

La configuration de base de mon application est un contrôleur d'onglets... et dans viewDidLoad, j'appelle une méthode "fetchFeed" qui exécute la requête HTTP pour collecter mes données JSON.

Mon bloc de requête ressemble à :

AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                    JSONRequestOperationWithRequest:request
                                     success:^(NSURLRequest *request, NSHTTPURLResponse   *response, id JSON) {
                                         [self parseDictionary:JSON];
                                         isLoading = NO;
                                         [self.tableView reloadData];

                                         } failure:^(NSURLRequest *request,   NSHTTPURLResponse *response, NSError *error, id JSON) {
                                             NSLog(@"Error: %@", error);
                                             [self showNetworkError];
                                             isLoading = NO;
                                             [self.tableView reloadData];
                                         }];
operation.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
[queue addOperation:operation];
Était-ce utile?

La solution

éteint le serveur que je demandais que l'image a été envoyé à content-type "image/jpg" et par défaut Afnetworking ne prend pas en charge ce type de fichier.

J'ai changé la méthode de la classe dans AfimagerEquestoperation à ressembler à:

+ (NSSet *)defaultAcceptableContentTypes {
return [NSSet setWithObjects:@"image/tiff", @"image/jpeg", @"image/gif", @"image/png", @"image/ico", @"image/x-icon" @"image/bmp", @"image/x-bmp", @"image/x-xbitmap", @"image/x-win-bitmap", @"image/jpg", nil];
}

Et il a corrigé mon problème.

Autres conseils

Vous pouvez réussir à accepter ce que content-type vous voulez avec cette bibliothèque en changeant simplement le request comme ça:

NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:yourURL];
[request addValue:@"image/*" forHTTPHeaderField:@"Accept"];

Et appelez la méthode AFNetworking :

AFJSONRequestOperation *operation = [AFJSONRequestOperation
                                     JSONRequestOperationWithRequest:request
                                     success:^(NSURLRequest *request, NSHTTPURLResponse   *response, id JSON) {
                                     } failure:^(NSURLRequest *request,   NSHTTPURLResponse *response, NSError *error, id JSON) {
                                     }];

De cette façon, vous pourrez remplacer le content-type sans changer de bibliothèque.

Afnetworking ne prend pas en charge Image / JPG MIME Type Par défaut.

Vous pouvez le supporter sans modifier la bibliothèque d'assistance Afnet

[AFImageRequestOperation addAcceptableContentType:@"image/jpg"];

Toutes les opérations qui manipulent l'interface utilisateur doivent être effectuées sur le fil principal.Donc, vous devrez peut-être utiliser 'SpectacleSelectorOnmaintHread: "lors du rechargement de vos données de TableView dans le bloc d'achèvement.

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO]

J'ai eu un problème similaire, mais il s'est avéré que je faisais passer une URL qui contenait des espaces.Lorsque j'ai correctement codé l'URL à l'aide de stringByAddingPercentEscapesUsingEncoding:, les images se chargeent maintenant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top