2つのページ(データのリストを表示するための最初のページと詳細データを表示するための2番目のページ)を持つ1つのアプリケーションを作成しました。
いずれかのセルをクリックすると次のページに移動し、次のページに次の名前のボタンが1つ存在します。このボタンをクリックして、このファイルをダウンロードしてドキュメントフォルダーに保存するダウンロードボタン。私はそれについて知らない。ファイルをダウンロードしてドキュメントフォルダーに保存する方法を教えてください。インターネットで検索していますが、理解できません。
1つのボタンでファイルをダウンロードする方法をコードで教えてください。英語が苦手な方は申し訳ありません。
これは私の友人です。
NSString *stringURL = @"http://www.somewhere.com/thefile.png";
NSURL *url = [NSURL URLWithString:stringURL];
NSData *urlData = [NSData dataWithContentsOfURL:url];
if ( urlData )
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"];
[urlData writeToFile:filePath atomically:YES];
}
別のスレッドでコードを実行することをお勧めします。
編集1:詳細
1)大きなファイルのダウンロードの場合、
-(IBAction) downloadButtonPressed:(id)sender;{
//download the file in a seperate thread.
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Downloading Started");
NSString *urlToDownload = @"http://www.somewhere.com/thefile.png";
NSURL *url = [NSURL URLWithString:urlToDownload];
NSData *urlData = [NSData dataWithContentsOfURL:url];
if ( urlData )
{
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", documentsDirectory,@"filename.png"];
//saving is done on main thread
dispatch_async(dispatch_get_main_queue(), ^{
[urlData writeToFile:filePath atomically:YES];
NSLog(@"File Saved !");
});
}
});
}