urban-health-labs/CombineFirebase

'Generic parameter 'Value' could not be inferred'

ysakurada opened this issue · 2 comments

Thank for uploading this repository.
I used sample code this and get this error.

'Generic parameter 'Value' could not be inferred'

var cancelBag = Set<AnyCancellable>()
let reference = Storage.storage()
    .reference(forURL: "\(your_firebase_storage_bucket)/images/space.jpg")

let fileURL: URL // Upload file
let uploadTask = reference.putFile(from: fileURL)

// Listen for state changes
uploadTask.publisher(.progress)
    .sink(receiveCompletion: { completion in
       switch completion {
       case .finished: print("🏁 finished")
       case .failure(let error): // Uh-oh, an error occurred! 
       }
   }) { snapshot in
      // Upload reported progress
      let percentComplete = 100.0 * Double(snapshot.progress!.completedUnitCount)
      / Double(snapshot.progress!.totalUnitCount)
   }
   .store(in: &cancelBag)

Did you get this kind of error?
And This code need 'break' after 'case .failure(let error)'.👍

Hey ysakurada,

Thank you for pointing that out. There were two things that was wrong,
Sample should be:

   var cancelBag = Set<AnyCancellable>()

    func uplodTask() {
        let someBucket = "some_bucket"
        let reference = Storage.storage()
            .reference(forURL: "\(someBucket)/images/space.jpg")

        if let fileURL = URL(string:"some") {
            let uploadTask = reference.putFile(from: fileURL)
            uploadTask.publisher(.progress)
                .sink(receiveCompletion: { _ in
                    // error will never call here
                    print("🏁 finished")
                }) { (snapshot) in
                    if let error = snapshot.error {
                            print("error: \(error)")
                        }
                    let percentComplete = 100.0 * Double(snapshot.progress?.completedUnitCount ?? 0) / Double(snapshot.progress?.totalUnitCount ?? 1)
            }.store(in: &cancelBag)
        }
    }

Also method publisher(_ status:) was not public, source of library. I updated that in version 0.2.4. Please update using: pod update

Thank you for fixing bug👍
And Giving new sample code👍

This repository make helpful for everyone👍💙Like!