**已关闭。**此问题为not reproducible or was caused by typos。目前不接受回答。
这个问题是由错字或无法再重现的问题引起的。虽然类似的问题在这里可能是on-topic,但这个问题的解决方式不太可能帮助未来的读者。
2天前关闭。
Improve this question的
我正在尝试将我的视频url上传到firebase,但我在视图模型上使用的当前代码不允许我将数据上传到firebase。我在尝试将我的视频上传到firebase时收到此错误。
无法将型别'String?'的值转换成预期的参数型别'URL'
guard let videoUrl = try await VideoUploader.uploadVideoToStorage(withUrl: videoUrl) else { return }
字符串
我如何将我的字符串转换成一个url来上传一个视频到firebase?
import SwiftUI
import Firebase
import PhotosUI
import FirebaseStorage
import FirebaseFirestoreSwift
@MainActor
class UploadPostViewModel: NSObject, ObservableObject {
@Published var didUploadPost = false
@Published var isLoading = false
@Published var error: Error?
@Published var videos = [Video]()
@Published var mediaPreview: Movie?
@Published var selectedVideoUrl: URL?
@Published var profileImage: Image?
@Published var text = ""
@Published var selectedImage: PhotosPickerItem? {
didSet { Task { await loadImage(fromItem: selectedImage)
Task { await loadVideo(fromItem: selectedImage) }
}
}
}
private var uiImage: UIImage?
private var videoData: Data?
func uploadPost(caption: String) async throws {
guard let uid = Auth.auth().currentUser?.uid else { return }
var videoUrl: String? = nil
let url = URL(string: videoUrl!)
guard let videoUrl = try await VideoUploader.uploadVideoToStorage(withUrl: videoUrl) else { return }
try await Firestore.firestore().collection("videos").document().setData(["videoUrl": videoUrl])
var imageUrl: String? = nil
if let image = uiImage {
imageUrl = try await ImageUploader.uploadImage(image: image , type: .post)
}
let post = Post(
ownerUid: uid,
text: text,
videoUrl: videoUrl, likes: 0,
replyCount: 23,
imageUrl: imageUrl, timestamp: Timestamp()
)
try await PostService.uploadPost(post)
self.didUploadPost = true
}
func loadImage(fromItem item: PhotosPickerItem?) async {
guard let item = item else { return }
guard let data = try? await item.loadTransferable(type: Data.self) else { return }
guard let uiImage = UIImage(data: data) else { return }
self.uiImage = uiImage
self.profileImage = Image(uiImage: uiImage)
}
func fetchVideos() async throws {
let snapshot = try await Firestore.firestore().collection("videos").getDocuments()
self.videos = snapshot.documents.compactMap({ try? $0.data(as: Video.self) })
}
func loadVideo(fromItem item: PhotosPickerItem?) async {
guard let item = item else { return }
do {
guard let movie = try await item.loadTransferable(type: Movie.self) else { return }
self.mediaPreview = movie
} catch {
print("DEBUG: Failed with error \(error.localizedDescription)")
}
}
}
型
1条答案
按热度按时间7cwmlq891#
下面是将字符串转换为URL的简单方法
字符串