Вам действительно не нужно использовать curl
для этого;просто используйте NSData
, чтобы выполнить задачу гораздо проще:
NSData *data = [NSData dataWithContentsOfURL:downloadURL];
[data writeToFile:[[NSString stringWithFormat:@"~/Desktop/%@", [downloadURL lastPathComponent]] stringByExpandingTildeInPath] atomically:YES];
Если вы настаиваете, что для этого вам нужно использовать curl
, вам придется исправить свой код,не работает по нескольким причинам.Прежде всего, ваши аргументы неверны.У вас должен быть следующий код:
[downloader setArguments:[NSArray arrayWithObjects:@"-L", @"-O", [downloadURL absoluteString], @"-o", [NSString stringWithFormat:@"~/Desktop/%@", [downloadURL lastPathComponent]], nil];
Во-вторых, system("cd ~/Desktop")
не имеет смысла;избавиться от него.
Наконец, NSTask
работает одновременно.[downloader launch]
начинает операцию, и ваш код продолжается.Должно быть:
[downloader launch];
[downloader waitUntilExit]; // block until download completes
[progressIndication stopAnimation:self];