Я пытаюсь создать приложение для iOS 5 с некоторыми базовыми функциями FTP, и мне нужны некоторые рекомендации. Он будет подключаться к устройству в локальной сети и выполнять операции чтения/записи с файлами .dat/txt. За последние несколько дней я провел некоторые поиски и видел различные рекомендации, но ничего достаточно простого, чтобы я мог подобрать и быстро изменить для личного использования.
Мои вопросы таковы:
Наконец, я должен упомянуть, что я потратил значительное количество времени на анализ SimpleFTPSample от Apple, но пример кода выдает уведомления «Ошибка подключения» и «Ошибка открытия потока» для каждого примера, поэтому я немного настороженно относитесь к его полезности.
Прошу прощения, если на этот вопрос был дан ответ в другом месте. Во всех связанных сообщениях есть части ответа, который мне нужен, но не весь. Заранее спасибо!
РЕДАКТИРОВАТЬ для ясности: Четко определенный пример или пошаговое руководство - это то, что мне действительно нужно. Мои собственные поиски в Google ничего не дали, и я отчаянно нуждаюсь в руководстве.
ОБНОВЛЕНИЕ: Я опубликовал этот вопрос давно, но продолжал использовать FTPHelper, упомянутый в принятом ответе.Недавно я стряхнул пыль со старого проекта и обнаружил небольшую утечку памяти в функции выборки FTPHelper, которая может убить приложение при многократном вызове. Если кто-то наткнется на этот вопрос и решит использовать FTPHelper, обязательно добавьте строку CFRelease, показанную в приведенном ниже коде.
- (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
}