I am using photoPicker to select an image from photo library, and before using defer, my code looks like this
PhotosPicker(selection: $selectedItem, matching: .images) { Label("Select an image", systemImage: "photo") } .onChange(of: selectedItem) { _, newValue in isLoadingImage = true Task { if let data = try? await newValue?.loadTransferable(type: Data.self) { selectedImageData = data if let selectedImageData, let uiImage = UIImage(data: selectedImageData) { inputImage = uiImage } } isLoadingImage = false } //: Task } //: onChange
After using defer and change try? to do { try } catch { }, my code now looks like this
PhotosPicker(selection: $selectedItem, matching: .images) { Label("Select an image", systemImage: "photo") } .onChange(of: selectedItem) { _, newValue in Task { isLoadingImage = true defer { isLoadingImage = false } do { if let data = try await newValue?.loadTransferable(type: Data.self) { selectedImageData = data if let selectedImageData, let uiImage = UIImage(data: selectedImageData) { inputImage = uiImage } } } catch { print("Failed to load image: \(error.localizedDescription)") } } //: Task } //: onChange
Top comments (0)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.