2012-03-12 6 views
5

Sto tentando di creare un'applicazione iOS 5 con alcune funzionalità FTP di base e ho bisogno di assistenza. Si collegherà a un dispositivo su una rete locale e eseguirà azioni di lettura/scrittura con file .dat/txt. Ho fatto qualche ricerca negli ultimi giorni e ho visto vari consigli ma niente di abbastanza semplice da poter essere raccolto e modificato rapidamente per mio uso personale.Configurazione di base dell'iOS su iOS; Streaming di lettura e scrittura

Le mie domande sono queste:

  1. Ci sono alcun codice tutorial/esempio che si potrebbe raccomandare a me?
  2. Quali framework e classi dovrei utilizzare per le operazioni di lettura/scrittura di base?

Infine, vorrei ricordare che ho dato una notevole quantità di tempo per analizzare il SimpleFTPSample da parte di Apple, ma il codice di esempio è dare "Errore di connessione" e "flusso aperto Error" Annunci per ogni esempio, così ho' Sono un po 'cauto della sua utilità.

Perdonami se questo è stato risposto altrove. Tutti i post correlati hanno pezzi della risposta di cui ho bisogno, ma non il tutto. Grazie in anticipo!

MODIFICA per chiarezza: un esempio ben definito o tutorial passo-passo è quello che mi piacerebbe davvero. Le mie ricerche su Google non hanno trovato nulla e ho disperatamente bisogno di una guida qui.

UPDATE: Ho postato questa domanda tempo fa, ma hanno continuato con il FTPHelper menzionato nella risposta accettata. Recentemente ho spazzato via la polvere dal vecchio progetto e ho capito che c'era una piccola perdita di memoria nella funzione di recupero di FTPHelper che può essere un app-killer se chiamato ripetutamente. Se anybdy si imbatte in questa domanda e sceglie di utilizzare FTPHelper, assicurati di aggiungere la riga CFRelease nel codice qui sotto.

- (void) fetch: (NSString *) anItem 
{ 
    if (!self.uname || !self.pword) COMPLAIN_AND_BAIL(@"Please set user name and password first"); 
    if (!self.urlString) COMPLAIN_AND_BAIL(@"Please set URL string first"); 

    NSString *ftpRequest = [NSString stringWithFormat:@"%@/%@", self.urlString, [anItem stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
/* CFShow(ftpRequest); */ 
    NSString *writepath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; 
    self.filePath = [writepath stringByAppendingPathComponent:anItem]; 
    CFURLRef writeURL = CFURLCreateFromFileSystemRepresentation (NULL, (const UInt8 *) [writepath UTF8String], [writepath length], NO); 
    MySimpleDownload((CFStringRef)ftpRequest, writeURL, (CFStringRef) self.uname, (CFStringRef)self.pword); 
    CFRelease(writeURL);//ADD THIS LINE TO FIX MEMORY LEAK 
} 
+0

è possibile inviare codice sorgente codice come implementare ftp per il download del file senza internet –

risposta

7

L'applicazione SimpleFTPSample è in esecuzione perfetta, probabilmente c'è un problema che non si può vedere. Quello che posso consigliarvi (eccetto l'esempio di Apple) è controllare l'esempio THIS che contiene una classe helper per tutte le operazioni di base dell'FTP. Una cosa a cui prestare attenzione è iOS 5 ARC. Sia l'esempio di Apple che quello collegato sono per versioni iOS precedenti.

Ci sono fondamentalmente 2 modi per usarli in iOS 5 - dicendo al compilatore di non usare ARC aggiungendo il flag -fno-objc-arc in [Il tuo progetto] -> TARGET -> [La tua app] -> Fasi di compilazione -> Fonti di compilazione -> [Il tuo file], o usando lo strumento integrato in Xcode per la conversione in ARC.

personalmente ho provato solo il primo metodo e funziona per me.

Se questo non ti aiuta, posso scrivere un esempio, ma sfortunatamente oggi sono molto occupato.

aggiornamento:

Il meccanismo di base è quella di utilizzare [FTPHelper list:THE_FTP_URL] per elencare il contenuto di una cartella, quindi creare una lista con il contenuto e in base al tipo (file o cartella) download tramite [FTPHelper download: THE_FTP_URL_WITH_THE_FILENAME_FROM_LISTING]. Da qui è necessario implementare

- (void) downloadFinished 
{ 
    //do the reading depending on the file type 
    NSData *data = [NSData dataWithContentsOfFile:[FTPHelper sharedInstance].filePath]; 
} 

Il caricamento è realizzato in un modo simile - con [FTPHelper upload:FILE_TO_UPLOAD] con un file dal filesystem.

+0

Hmm, mi chiedo cosa sto sbagliando con SimpleFTP. Indipendentemente da ciò, grazie per l'altro esempio. Sto armeggiando con esso in questo momento e sta già dando risultati (un bel cambiamento di ritmo!). Supponendo che tu abbia familiarità con la classe FTPHelper, come consiglieresti di scaricare foo.txt e leggerne il contenuto? O che ne dici di scrivere contenuti su foo2.txt e caricarli? – Squatch

+0

Ho modificato la mia risposta, è possibile verificarla. Se qualcosa non è chiaro, non esitate a chiedere. – o15a3d4l11s2

+0

Grande. Che sollievo è finalmente avere qualcosa su cui lavorare. Grazie! – Squatch

4

Ci sono molte librerie che è possibile utilizzare e funzionano perfettamente. :)

Ad esempio:

http://www.chilkatsoft.com/ftp-objc.asp

http://code.google.com/p/ios-ftp-server/

mi consiglia di usarli, perché codifica uno da solo avrebbe preso un sacco di tempo :) Una cosa da ricordare, come ha detto o15a3d4l11s2 , deve essere a conoscenza di ARC. Se lo usi, non dimenticare di aggiungere i flag di compilazione alle librerie che non sono ARC.

+0

Grazie per le librerie alternative. Penso che potrei rimanere con FTPHelper, ma queste cose tendono a richiedere piani di backup, quindi è fantastico averli. – Squatch

+0

Ho bisogno di creare un'app che supporti l'upload di video più grandi anche se l'app è in background posso usare questo \t Ci sono molte librerie che potresti usare e stanno lavorando alla grande. :) Ad esempio: http://www.chilkatsoft.com/ftp-objc.asp ?? –