Как создать модель представления для загрузки сообщения в Firebase ⇐ IOS
-
Anonymous
Как создать модель представления для загрузки сообщения в Firebase
Я пытаюсь создать модель представления, которая позволит мне загрузить URL-адрес видео, строку изображения и текстовую строку в Firebase SwiftUI ios16, но текущий код, который я использую в модели представления, получает ошибку, не позволяющую мне загрузить мои данные в Firebase, ни одна из моих строк не загружается. Как мне переписать этот код, чтобы загрузить сообщение в Firebase и решить мою проблему?
Тема 1: Неустранимая ошибка: неожиданно обнаружено ноль при развертывании необязательного значения
let videoData = попробуйте дождаться элемента!.loadTransferable(тип: Data.self) класс UploadPostViewModel: NSObject, ObservableObject { @Published вар DidUploadPost = false @Published вар isLoading = false @Опубликованная ошибка var: Ошибка? @Published var videos = [Видео]() @Published var mediaPreview: Фильм? @Published var ProfileImage: Изображение? @Published var text = "" @Published var selectedImage: PhotosPickerItem? { DidSet { Task { ждут loadImage (fromItem: selectedImage) Задача { попробуйте дождаться загрузкиVideo() } } } } частная переменная uiImage: UIImage? func uploadPost(caption: String) асинхронный бросок { Guard let uid = Auth.auth().currentUser?.uid else { return } вар imageUrl: String? = ноль если пусть изображение = uiImage { imageUrl = попробуйте дождаться ImageUploader.uploadImage(изображение: изображение, тип: .post) } пусть элемент = выбранное изображение let videoData = попробуйте дождаться элемента!.loadTransferable(тип: Data.self) let videoUrl = (попробуйте await VideoUploader.uploadVideo(withData: videoData!))! пусть пост = Сообщение( OwnerUid: идентификатор пользователя, текст: текст, videoUrl: videoUrl, лайков: 0, Количество ответов: 23, imageUrl: imageUrl, временная метка: Timestamp() ) попробуйте подождать PostService.uploadPost(сообщение) self.didUploadPost = правда } func loadImage(fromItem item: PhotosPickerItem?) async { Guard let item = item else { return } охранник пусть данные = попробовать? await item.loadTransferable(type: Data.self) else { return } Guard let uiImage = UIImage(data: data) else { return } self.uiImage = uiImage self.profileImage = Изображение(uiImage: uiImage) } func uploadVideo() асинхронно выдает { Guard let item = selectedImage else {return} Guard let videoData = попробуйте дождаться item.loadTransferable(type: Data.self) else {return} Guard let videoUrl = попробуйте подождать VideoUploader.uploadVideo(withData: videoData) else { return} попробуйте await Firestore.firestore().collection("videos").document().setData(["videoUrl": videoUrl]) } } Опубликовать
импортировать FirebaseFirestoreSwift импортировать Firebase struct Post: Идентифицируемый, Хешируемый, Кодируемый { @DocumentID идентификатор переменной: строка? пусть владелецUid: строка пусть текст: строка пусть videoUrl: String? var любит: Int вар ответКаунт: Int пусть imageUrl: String? let timestamp: Временная метка вар пользователя: Userss? var DidНравится: Bool? = ложь }
Я пытаюсь создать модель представления, которая позволит мне загрузить URL-адрес видео, строку изображения и текстовую строку в Firebase SwiftUI ios16, но текущий код, который я использую в модели представления, получает ошибку, не позволяющую мне загрузить мои данные в Firebase, ни одна из моих строк не загружается. Как мне переписать этот код, чтобы загрузить сообщение в Firebase и решить мою проблему?
Тема 1: Неустранимая ошибка: неожиданно обнаружено ноль при развертывании необязательного значения
let videoData = попробуйте дождаться элемента!.loadTransferable(тип: Data.self) класс UploadPostViewModel: NSObject, ObservableObject { @Published вар DidUploadPost = false @Published вар isLoading = false @Опубликованная ошибка var: Ошибка? @Published var videos = [Видео]() @Published var mediaPreview: Фильм? @Published var ProfileImage: Изображение? @Published var text = "" @Published var selectedImage: PhotosPickerItem? { DidSet { Task { ждут loadImage (fromItem: selectedImage) Задача { попробуйте дождаться загрузкиVideo() } } } } частная переменная uiImage: UIImage? func uploadPost(caption: String) асинхронный бросок { Guard let uid = Auth.auth().currentUser?.uid else { return } вар imageUrl: String? = ноль если пусть изображение = uiImage { imageUrl = попробуйте дождаться ImageUploader.uploadImage(изображение: изображение, тип: .post) } пусть элемент = выбранное изображение let videoData = попробуйте дождаться элемента!.loadTransferable(тип: Data.self) let videoUrl = (попробуйте await VideoUploader.uploadVideo(withData: videoData!))! пусть пост = Сообщение( OwnerUid: идентификатор пользователя, текст: текст, videoUrl: videoUrl, лайков: 0, Количество ответов: 23, imageUrl: imageUrl, временная метка: Timestamp() ) попробуйте подождать PostService.uploadPost(сообщение) self.didUploadPost = правда } func loadImage(fromItem item: PhotosPickerItem?) async { Guard let item = item else { return } охранник пусть данные = попробовать? await item.loadTransferable(type: Data.self) else { return } Guard let uiImage = UIImage(data: data) else { return } self.uiImage = uiImage self.profileImage = Изображение(uiImage: uiImage) } func uploadVideo() асинхронно выдает { Guard let item = selectedImage else {return} Guard let videoData = попробуйте дождаться item.loadTransferable(type: Data.self) else {return} Guard let videoUrl = попробуйте подождать VideoUploader.uploadVideo(withData: videoData) else { return} попробуйте await Firestore.firestore().collection("videos").document().setData(["videoUrl": videoUrl]) } } Опубликовать
импортировать FirebaseFirestoreSwift импортировать Firebase struct Post: Идентифицируемый, Хешируемый, Кодируемый { @DocumentID идентификатор переменной: строка? пусть владелецUid: строка пусть текст: строка пусть videoUrl: String? var любит: Int вар ответКаунт: Int пусть imageUrl: String? let timestamp: Временная метка вар пользователя: Userss? var DidНравится: Bool? = ложь }
Мобильная версия