2016-03-29 14 views
0

Ich entwickle eine iPhone-Anwendung für einen Audio-Player. Ich möchte dem Benutzer einige Optionen geben, damit sie den Song/die Musik per Streaming anhören können oder sie können die Audiodatei herunterladen und in der SQLite-Datenbank speichern. Ich kann die Audiodateien in der App programmgesteuert streamen. Aber ich weiß nicht, wie man die heruntergeladene Audiodatei in sqlite-Datenbank mit BLOB speichert. Nachdem ich die Audiodatei in der sqlite DB gespeichert habe, muss ich die Audiodatei holen und den Song abspielen. Wie hole ich die Audiodatei von sqlite DB?So speichern Sie Audiodatei in SQLite-Datenbank in iOS

Dies ist mein Code zum Herunterladen der Audiodatei.

NSURL *url = [NSURL URLWithString:@"http://www.fileurl.com/example.mp3"]; 

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url]; 

[request setDownloadDestinationPath:[NSString stringWithFormat:@"%@",dataPath]]; 

[request setDelegate:self]; 

[request startAsynchronous]; 
+0

Warum möchten Sie es in einer Datenbank speichern? Das Speichern großer Mengen binärer Daten in einer relationalen Datenbank ist keine gute Idee. In der Regel werden die Daten in einer normalen Datei gespeichert und einfach in der Datenbank gespeichert. – trojanfoe

+0

@trojanfoe Danke für Ihre Antwort. bitte geben Sie mir richtige Anleitung. Ich bin völlig neu in iOS-Entwicklung. – satya

+0

Es hat nichts zu tun mit iOS; Ich hätte den gleichen Kommentar unabhängig von Plattform/Sprache/etc. – trojanfoe

Antwort

2

Ich empfehle nicht, binäre Dateien in der Datenbank als Blobs zu speichern. es wird Ihnen in Zukunft ein Problem mit wachsender Datenbank Dateigröße machen. Sie müssen einen intelligenten Vakuumbetrieb implementieren, der bei großen Datenmengen sehr langsam ist. Meine starke Meinung: Die Dateien müssen im Dateisystem gespeichert werden. Speichern Sie Ihre Datei im Ordner "Dokumente" der Anwendung und speichern Sie eine Art Verknüpfung zu ihnen in der Datenbank.

+1

Und stellen Sie sicher, dass Sie den vollständigen Pfad nicht in der Datendatei speichern ... – trojanfoe

+0

@heximal Vielen Dank für Ihre Hilfe. aber ich habe verwirrt, wie man Datei im Anwendung Dokumenteordner speichert, stellen Sie jeden möglichen Beispielcode zur Verfügung. – satya

+0

@heximal kann ich nicht verstehen, wie man Audiodatei in sqlite DB speichert und wie man Audiodatei von sqlite DB holt, geben Sie mir Beispiel oder Beispielcode. Ich werde versuchen, zu verstehen .. Vielen Dank im Voraus – satya

0

können Sie Datei herunterladen und Audiodatei mit NSDocumentDirectory in App schreiben. Dokumente-Ordner wie

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"audio.mp3"]]; 
[{your audio file in NSData} writeToFile:path atomically:YES]; 

jetzt nur „Audio.mp3“ speichern in Datenbank

, wenn Sie Daten aus der Datenbank abzurufen, die Sie Namen geben wie

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:{database store name}]]; 

note wenn Sie vollständigen Pfad speichern, die funktioniert nicht, da Dokumente den Pfad ändern, wenn Sie App ausführen.

+0

Vielen Dank für Ihre Antwort. jetzt, wie man die Audiodatei von sqlite DB – satya

+0

holt Warum würden Sie die Akten im Dokumentenordner speichern? – trojanfoe

+0

Sie können nicht Datei in der Datenbank speichern. schreibe diese Datei in das Dokument Dic. und erhalte nur den Schreibpfad und speichere diesen Pfad in der Datenbank. –