![](/img/trans.png)
[英]"FIRESTORE INTERNAL ASSERTION FAILED: Invalid document reference. Document references must have an even number of segments, but NewGame has 1"
[英]Thread 1: FIRESTORE INTERNAL ASSERTION FAILED: Invalid document reference. Document references must have an even number of segments, but Posts has 1?
为什么我在尝试创建 firebase 计数器时不断收到此错误? 我实际上是在跟踪 google firebase docs line for line。 这是创建计数器功能
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])
}
}
}
这就是我尝试使用它的方式
Button("In there"){createCounter(ref: ref.document("Posts"), numShards: 0); incrementCounter(ref: ref.document("Posts"), numShards: 0); getCount(ref: ref.document("Posts"))
}
当我有这个时,我也不断收到这个“从初始化程序返回而不初始化所有存储的属性”错误。
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
}
在 SwiftUI 视图的init(){}
中使用此代码。
init() {
UINavigationBar.appearance().barTintColor = UIColor.clear
UINavigationBar.appearance().tintColor = .clear
UINavigationBar.appearance().isOpaque = true
}
您收到错误是因为您没有在“init(...)”中初始化所有变量。 尝试这样的事情:
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
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.