简体   繁体   中英

Thread 1: FIRESTORE INTERNAL ASSERTION FAILED: Invalid document reference. Document references must have an even number of segments, but Posts has 1?

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
        
    }

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

init() {
      
        UINavigationBar.appearance().barTintColor = UIColor.clear        
        UINavigationBar.appearance().tintColor = .clear
        UINavigationBar.appearance().isOpaque = true

       }

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   
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM