Ошибка при загрузке из хранилища Firebase

Я пытаюсь получить базовую загрузку / загрузку, работающую с новым хранилищем Firebase. Загрузка прошла успешно, но я не могу загрузить файл на устройство. Может кто-нибудь пролить свет на то, что я делаю неправильно. Спасибо!

func downloadAudio() {

let storageRef = FIRStorage.storage().reference()

let pathReference = storageRef.child("testAudio/audio_test.m4a")

let localURL = getDocumentsDirectory().URLByAppendingPathComponent("audio_test2.m4a")

let downloadTask = pathReference.writeToFile(localURL) { (URL, error) -> Void in
  if (error != nil) {

    print("ERROR - ", error.debugDescription)
  } else {
    print("SUCCESS - ", URL)
  }
 }
}

ПЕЧАТИ:

ОШИБКА - Необязательно (Error Domain = FIRStorageErrorDomain Code = -13000 «Произошла неизвестная ошибка, проверьте ответ сервера». UserInfo = {ResponseErrorDomain = NSCocoaErrorDomain, object = testAudio / audio_test.m4a, NSURL = / Users / Ben / Library / Developer / CoreSimulator / Devices / 02AF50F2-E9BE-4EED-A3BE-485D63264731 / data / Containers / Data / Application / 31BDED56-0135-4E70-943E-F897080768D6 / Documents /, bucket = mydevslopesapp.appspot.com, ResponizedDescription = NSErcription = 5 Произошла неизвестная ошибка, проверьте ответ сервера.})


person Ben Sullivan    schedule 26.05.2016    source источник


Ответы (1)


Это не ошибка хранилища, это проблема с файлом, в который вы пытаетесь записать.

Похоже, URLByAppengingString должно быть fileURLWithPath, чтобы получить URL-адрес файловой системы (на NSFileManager при создании каталога ошибка 518 NSFileManager при создании каталога ошибка 518 NSFileManager).

В долгосрочной перспективе нам нужно выловить это и использовать как «увидеть соответствующую ошибку», а не «прочитать ответ сети».

person Mike McDonald    schedule 27.05.2016
comment
аааа отлично сработало, спасибо! Если вы являетесь частью команды Firebase, было бы полезно включить это в документацию :) (для тех из нас, кто не слишком опытен) - person Ben Sullivan; 28.05.2016
comment
В этом примере в настоящее время используется NSURL (String: firebase.google.com/ документы / хранилище / ios / - person Ben Sullivan; 28.05.2016
comment
Это будет работать, потому что у него есть схема file://, которая идентифицирует его как локальный файл, в приведенном выше примере не создается URL-адрес файла, он просто создает URL-адрес (без схемы). fileURLWithPath - это просто сокращение для создания NSURL со схемой file:// (см. Заголовок stackoverflow.com/questions/16097404/) - person Mike McDonald; 28.05.2016