2015-11-30 22 views
8

Ho integrato la libreria AFNetworking nella mia app per scaricare immagini da un URL e l'app si arresta in modo anomalo quando si caricano più immagini.L'app si arresta in modo anomalo quando si caricano più immagini dal server utilizzando AFNetworking

Quando analizzo il mio codice utilizzando l'elenco dei crash report Xcode (Xcode -> Finestra -> Organizer -> Arresti -> La nostra applicazione), sta mostrando un errore nella libreria AFNetworking per questa riga di codice:

Classe: UIImageView+AFNetworking

Nome metodo: setImageWithURLRequest

riga di codice: [[[self class] af_sharedImageRequestOperationQueue] addOperation:self.af_imageRequestOperation];

Qualcuno può aiutarmi a risolvere questo problema?

+2

Qual è l'errore attuale? E aggiorna la tua domanda con il codice pertinente. – rmaddy

+0

Quando sto aggiungendo stessa operazione per sharedImageRequestOperationQueue di AFNetworking, si sta gettando un errore come "- [UIImageView (AFNetworking) setImageWithURLRequest: placeholderImage: il successo: il fallimento:] _ block_invoke89 + 120" – Brjv

+0

Questo non è un messaggio di errore. Fa parte della traccia dello stack. Anche il registro degli arresti anomali presenterà un messaggio di errore effettivo. – rmaddy

risposta

4

Provate il seguente codice

NSURL *url = [NSURL URLWithString:@"YourImageURL"]; 

NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

UIImage *placeholderImage = [UIImage imageNamed:@"placeholder"]; 

__weak UIImageView *weakImageView = yourImageView; 

[weakImageView setImageWithURLRequest:request 

         placeholderImage:placeholderImage 

           success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image) { 

             weakImageView.image = image; 

            } failure:nil]; 
+0

puoi anche usare NSCache con questo codice. questo ridurrà il caricamento della stessa immagine ancora e ancora. – vaibby

0

https://github.com/Alamofire/Alamofire installare questo pod

Provate il seguente codice per il caricamento di più immagini al server Codice:

Alamofire.upload(
      .POST, 
      urlString, 
      multipartFormData: { multipartFormData in 
       for image in images { 
        if let imageData = UIImageJPEGRepresentation(image, 0.1) { 
         multipartFormData.appendBodyPart(data: imageData, name: "file", fileName: "file.jpeg", mimeType: "image/jpeg") 
        } 
       } 
      }, 
      encodingCompletion: { encodingResult in 
       switch encodingResult { 
       case .Success(let upload, _, _): 
        upload.responseJSON(completionHandler: { (response) -> Void in  
         if response.result.error != nil { 
          print("Something is wrong while uploading images.") 
         } else { 
         } 
        }) 
       case .Failure(let encodingError): 
        print(encodingError) 
       } 
      } 
     ) 
+0

Utilizzare https://github.com/rs/SDWebImage per immagini che scaricano utilizzando questa cella di codice di esempio.ImageView.sd_setImageWithURL (NSURL (stringa: car.mediaList [0] .url ?? ""), placeholderImage: UIImage (denominato: "testCar")) –

1

Ci sono molte prove di unità intorno download di immagini e una nuova architettura nel ramo 3.0.0 con test aggiuntivi che coprono immagini multiple da scaricare ADing.