Благодаря большому обновлению в Firebase, я переключаю хостинг изображений для своего приложения с AWS на теперь включенное GS Storage в Firebase. Я уже импортировал все необходимые контейнеры, это приложение уже успешно загружает изображения в назначенные ковши, но проблема в том, когда я хочу загрузить в память изображения, хранящиеся, а приложение сбой, отладка. Я обнаружил следующую ошибку в своем FIRStorageReference object: «использование необъявленного типа« FirebaseStorage »« Я импортирую заголовок Firebase в VC, где находится функция.FirebaseStorage проблема с загрузкой данных в память (Swift)
func getImage(imageName: String) -> UIImage {
let imageRef = kBucketRef.child(imageName)
print(imageRef)
var imageData: NSData?
var image: UIImage?
imageRef.dataWithMaxSize(200 * 1024) { (data, error) -> Void in
if (error != nil) {
imageData = data
image = UIImage(data: imageData!)
} else {
print(error?.localizedDescription)
}
}
return image!
}
позже при попытке отобразить изображение в: image.image = GetImage (ImageName) называется он выдает указанную ошибку в обратном изображении!
fatal error: unexpectedly found nil while unwrapping an Optional value
Printing description of imageRef: expression produced error: /var/folders/9q/g2rz2_hj15548cf15yrxz37c0000gn/T/lldb/1645/expr11.swift:1:46: error: use of undeclared type 'FirebaseStorage' $__lldb__DumpForDebugger(Swift.UnsafePointer< FirebaseStorage.FIRStorageReference >(bitPattern: 0x11d028fa0).memory) ^~~~~~~~~~~~~~~ /var/folders/9q/g2rz2_hj15548cf15yrxz37c0000gn/T/lldb/1645/expr11.swift:1:45: note: while parsing this '<' as a type parameter bracket $__lldb__DumpForDebugger(Swift.UnsafePointer(bitPattern: 0x11d028fa0).memory)
Выход 'печати (imageRef)' печатает GS эталонные (GS: // Проект-хххххх ...), но '.dataWithMaxSize() терпит неудачу
Заранее спасибо
(дни) Ok, вот обходной путь, так как методы FIRStorage не изменяют ВАР в отделенной функции для последующего возврата:
let bucket: String = "gs://mystoragetesterxxxxxx.appspot.com"
func getImage() {
let storage = FIRStorage.storage()
let storageRef = storage.referenceForURL(bucket)
let path = storageRef.child("photo.jpg")
print(path)
path.dataWithMaxSize(1024 * 1024) { (data, error) in
if (error != nil) {
print(error!.localizedDescription)
} else {
self.imageView.image = UIImage(data: data!)
}
}
}
Теперь GetImage это функция тщетным, но работает
Изменена функция в соответствии с вашим предложением, и она выбрасывает нуль, сохраненный путь к файлу верен, там есть файл, но он по-прежнему не присваивает его «данным», то ведро настроено как общедоступное. Это не вызывает условие (error! = Nil), оно просто не загружает изображение –