Не удается загрузить изображения из базы данных Firebase по ссылке или пути - PullRequest
0 голосов
/ 06 августа 2020

Привет всем, я не могу загружать изображения из моей базы данных по ссылке или по пути. Все ссылки верны, и они также верны в приложении. В отладчике нет ошибок, и мой код выглядит как пример документации. Я не могу решить эту проблему 2 дня, и никто из моих друзей или ребят из быстрых чатов мне не помог. Пример http-ссылки: ... firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F26.png?alt=media&token...

let urlText = modelArray[indexPath.row].imageURL
    print(urlText) //here is a print
    let ref = Storage.storage().reference(forURL: urlText)
    let megabyte = Int64(1 * 1024 * 1024)
    ref.getData(maxSize: megabyte) { data, error in
        guard let imageData = data else { return } //1st breakpoint
        let image = UIImage(data: imageData) //2nd break
        cell.itemImageView.image = image!

imageUrl был получен из FirebaseStorage методом copypaste. Эта ссылка печатается правильно. Я поставил 2 точки останова, чтобы поймать проблему, и вот что я получил от lldb: (lldb) expr error (Error?) $R2 = domain: "FIRStorageErrorDomain" - code: 18446744073709538595 { _userInfo = 0x000060000078e2c0 }

(lldb) expr data (Data?) $R0 = nil - данные равны нулю! Мне не удалось найти решение этой ошибки в inte rnet. Загрузка изображений по пути тоже не работает. Проблема та же. Все остальное из базы данных исправляется.

Все напечатанные материалы:

https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F26.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F6.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F1.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F26.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F6.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F1.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F14.png?alt=media&token=xxxx https://firebasestorage.googleapis.com/v0/b/pfood-5b1eb.appspot.com/o/menu%2F30.png?alt=media&token=xxxx 2020-08-08 00:04:00.356154+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS031025] Analytics screen reporting is enabled. Call +[FIRAnalytics setScreenName:setScreenClass:] to set the screen name or override the default screen class name. To disable screen reporting, set the flag FirebaseScreenReportingEnabled to NO (boolean) in the Info.plist 2020-08-08 00:04:00.650564+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS023007] Analytics v.60301000 started 2020-08-08 00:04:00.861852+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS023008] To enable debug logging set the following application argument: -FIRAnalyticsDebugEnabled (see xxxx) 2020-08-08 00:04:01.149822+0300 pFood[24374:1517416] 6.19.0 - [Firebase/Analytics][I-ACS800023] No pending snapshot to activate. SDK name: app_measurement 2020-08-08 00:04:02.406372+0300 pFood[24374:1517487] 6.19.0 - [Firebase/Analytics][I-ACS800003] Registered an SDK that has already registered. Default flags will be overwritten. SDK name: app_measurement 2020-08-08 00:04:02.511475+0300 pFood[24374:1517497] 6.19.0 - [Firebase/Analytics][I-ACS800023] No pending snapshot to activate. SDK name: app_measurement 2020-08-08 00:04:10.454503+0300 pFood[24374:1517594] 6.19.0 - [Firebase/Analytics][I-ACS023012] Analytics collection enabled

Я попробовал код @Jay, и моя консоль стала выглядеть как gs://pfood-5b1eb.appspot.com/menu/1.png. User does not have permission to access это firebase, и мы собираемся исправить это с командой.

Извините за мой плохой Engli sh. Это мой первый случай. Я активно проверяю комментарии и ответы. Спасибо за любой отзыв.

Ответы [ 2 ]

0 голосов
/ 08 августа 2020

Проблема действительно не в коде. Нам просто нужно переключить разрешение доступа в Firebase Storage. Это была глупая проблема, лол. Спасибо за отзыв!

0 голосов
/ 08 августа 2020

Это не прямой ответ, но может привести к такому.

Частью устранения неполадок является обнаружение ошибок, возвращаемых сервером при их возникновении, и предоставление этой информации вам (разработчику) или конечному пользователю .

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

Попробуйте изменить свой код, чтобы выявлять и обрабатывать ошибки - это даст вам больше информации о текущей проблеме:

let urlText = modelArray[indexPath.row].imageURL
let ref = Storage.storage().reference(forURL: urlText)
let megabyte = Int64(1 * 1024 * 1024)
ref.getData(maxSize: megabyte) { maybeData, maybeError in
    if let err = maybeError {
        print(err.localizedDescription)
        return
    }
    
    guard let imageData = maybeData else {
        print("data was nil, file not found")
        return
    }
    
    if let image = UIImage(data: imageData) {
        cell.itemImageView.image = image
    } else {
        print("imageData was not valid")
    }
}

Это похоже на проблему с аутентификацией или правилами, поэтому обновите вопрос, когда появится дополнительная информация на основе изменения моего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...