2012-01-10 11 views
5

Attualmente sto creando un'app per iOS Edicola. Ho dei problemi aggiunti e funzionano come voglio io. Tuttavia, quando provo ad andare a scaricare il loro file remoto, non sembra funzionare. Nessuno dei metodi delegati viene chiamato e nessun file viene scritto.NKAssetDownload Download Issues

Questo è quello che ho per certo:

  • Un UITableViewController che è un NSURLConnectionDownloadDelegate.
  • UIBackgroundModes (nel file info.plist) ha 'edicola-content' aggiunto
  • # import è nell'intestazione della mia UITableViewController
  • metodi di NSURLConnectionDownloadDelegate sono implementati

Il seguente codice accade quando il l'utente accetta di scaricare il problema (Nota: il problema non è nullo):

// Download the Issue! 
    NSLog(@"Starting Download of issue %@",issue.name); 

    // Generate the url of the issue   
    NSURL * downloadURL = [dataManager pdfURLForIssue:issue]; 

    // Create the request 
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:downloadURL 
                  cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData 
                 timeoutInterval:30.0]; 

    // Create the NKAssetDownload object 
    NKAssetDownload *assetDownload = [issue addAssetWithRequest:request]; 

    // Set user info so I know which issue's UIProgressView to update 
    [assetDownload setUserInfo:[NSDictionary dictionaryWithObjectsAndKeys:issue.name,@"Name", 
           nil]]; 

    // start download 
    [assetDownload downloadWithDelegate:self]; 

Non ho idea di cosa sta succedendo. Da tutto quello che ho letto, sembra che abbia implementato tutto correttamente; tuttavia, non sta accadendo nulla. Ho impostato punti di interruzione, NSlog e così via; ma niente. Ho persino lasciato correre per un po ', poi ho controllato il [contentURL] del problema che il file sarebbe stato spostato (nella mia connessioneDidFinishDownloading: destinationURL: metodo).

Qualcuno può aiutare? O forse qualche idea per me? Sono stato bloccato per giorni. Se hai bisogno di vedere più codice, fammelo sapere. Grazie!

+0

Stai chiamando questo metodo da un thread in background o una coda GCD globale? –

+0

Non che io sappia. Per prima cosa visualizzo un UIAlertView e se il pulsante "Download" viene toccato, viene chiamato il codice sopra. Più specificamente, viene eseguito nel metodo "alertView: clickedButtonAtIndex:". – Johnny

+0

Quello non sarebbe di default allo sfondo, vero? – Johnny

risposta

3

Ho finalmente risolto. Ho avviato un progetto completamente nuovo e ho effettuato tutti i test di download su quello. Risulta (potrei sbagliarmi ma è quello che ho trovato) che anche se una normale NSURLConnection o richiesta di download funziona nel simulatore iPhone/iPad, sembra che NKAssetDownload non funzioni a meno che non sia in esecuzione su un dispositivo reale.

Per riassumere, non stavo facendo nulla di sbagliato in termini di codice; tuttavia, avevo bisogno di eseguire l'applicazione su un dispositivo reale per gli oggetti NKAssetDownload avrebbero iniziato il download. Certo, potrebbe essere stata solo la mia esperienza, ma ha risolto il mio problema.

Spero che questo aiuti gli altri che stanno incontrando problemi simili.

+0

Per quanto mi riguarda, NKAssetDownload funziona alla grande sia sul dispositivo che sul simulatore ... – Vive

1

NKAssetDownload fa funziona sul simulatore iPad iOS 5.0 ma non è disponibile sul simulatore iOS 4.3 di iPad. Se avevi eseguito l'app sul simulatore 4.3 avresti avuto un errore quando avevi provato ad accedere a newsstandkit, quindi suppongo che tu abbia usato il simulatore 5.0.

Il tuo estratto di codice sembra buono, quindi questo rimarrà probabilmente un mistero.