skip to Main Content

Why do I keep getting this error when trying to create a firebase counter? I am literally following the google firebase docs line for line.
this is the create counter function

  func createCounter(ref: DocumentReference, numShards: Int) {
               ref.setData(["numShards": numShards]){ (err) in
                   for i in 0...numShards {
                       ref.collection("shards").document(String(i)).setData(["count": 0])
                   }
               }
           }

and this is how I am trying to use it

 Button("In there"){createCounter(ref: ref.document("Posts"), numShards: 0); incrementCounter(ref: ref.document("Posts"), numShards: 0); getCount(ref: ref.document("Posts"))
                        
                    }

I also keep getting this "Return from initializer without initializing all stored properties" error when I have this.

struct PostRow: View {
    
    var post: PostModel
    @ObservedObject var postData : PostViewModel
    let db = Firestore.firestore()
    let uid = Auth.auth().currentUser!.uid
    let numShards: Int
    let count: Int
    
    init(numShards: Int, count: Int) {
        self.numShards = numShards
        self.count = count
        
    }

2

Answers


  1. Use this code in the init(){} of SwiftUI View.

    init() {
          
            UINavigationBar.appearance().barTintColor = UIColor.clear        
            UINavigationBar.appearance().tintColor = .clear
            UINavigationBar.appearance().isOpaque = true
    
           }
    
    Login or Signup to reply.
  2. you are getting the error because you are not initialising all your variables in "init(…)". Try something like this:

    struct MAPostRow: View {
        
        let loc: String = "Massachusetts" // <--- initialized
        var post: PostModel   // <-- not initialized
        @ObservedObject var MApostData : MAPostViewModel  // <-- not initialized
        let uid = Auth.auth().currentUser!.uid  // <-- avoid doing this "!"
        
        init(post: PostModel, MApostData: MAPostViewModel) {  // <-- need to do this
            self.post = post  // <--- now initialized
            self.MApostData = MApostData // <--- now initialized
            
            UINavigationBar.appearance().barTintColor = UIColor.clear
            UINavigationBar.appearance().tintColor = .clear
            UINavigationBar.appearance().isOpaque = true   
        }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search