2016-03-20 44 views
0

Düğme tıklandığında her seferinde ses yüklenir. Zaten yüklenmişse hemen ses nasıl çalınır?Sesin çevrimdışı olup olmadığını nasıl kontrol edebilirim?

- (void) song{ 
if (_index1 == 0) { 
    NSString *stringURL = @"https://drive.google.com/uc?export=download&id=0B6zMam2kAK39UjJuTHB5QWRuRU0"; 
    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,@"music.mp3"]; 
     [urlData writeToFile:filePath atomically:YES]; 
     self.audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:filePath] error:nil]; 
    } 
    } 
} 

cevap

0

Belgeler dizininde her zaman "music.mp3" dosyasına kaydedilen bir kodunuz var. (Sen değil stringWithFormat daha yol ile başa çıkmak için NSString yöntemlerini kullanmalıdır. stringByAppendingPathComponent bir göz atın. Bu sizin için bir yol dizesi inşa ayrıntıları işler.)

Ben yalnızca tek ses ile uğraşıyoruz toplamak dosya o zaman?

bir dosya NSFileManager bir örneğini oluşturmak ve biri fileExistsAtPath gibi fileExists yöntemleri var kullanmak zorunda olup olmadığını kontrol etmek istiyorsanız

. Dosya varsa, indirme işlemini atlayın ve dosyayı yükleyip oynatın.

Web'den bir dosya indirmek için dataWithContentsOfURL kullanmamanız gerektiğini unutmayın. Bu, indirme işlemi tamamlanana kadar UI'yi engelleyen senkronize bir çağrıdır. Bunun yerine NSURLSession kullanmalısınız. Bir NSURLDownloadTask oluşturabilir ve dosyayı doğrudan diske yükleyebilir, ardından indirme işlemi tamamlandıktan sonra bir kod bloğunu çağırabilirsiniz.

NSURLSessionsharedSession ve downloadTaskWithURL yöntemlerine bir göz atın.

Ray Wenderlich NSURLSession ve NSURLSessionDownloadTask kullanma konusunda bir öğretici vardır:

NSURLSession Tutorial

+0

sen benim kodundan bir örnek verebilir lütfen. Bunu yapamam. – Dark

+0

"kodumdan bir örnek ver" gibi sesler "benim için kod yazabilir misin" gibi. Denemezsen kesinlikle yapamazsın. Niçin cevabımda bağladığım Ray Wenderlich eğitiminden geçmiyorsunuz, egzersizleri yapıyorsunuz ve sonra projeniz için nasıl kod yazılabileceğini öğrenemiyor musunuz? Sorun yaşıyorsanız güncellenmiş kodunuzu gönderin ve düzeltmenize yardımcı olabiliriz. –

+0

@Dark, Hangi kısımda sorun yaşıyorsunuz? Dosyanın var olup olmadığını görmek için 'NSFileManger' kullanma ya da dosyayı indirmek için' dataWithContentsOfURL' yerine NSURLSession kullanmak için kodunuzu yeniden yazın? –

İlgili konular