【问题标题】:SwiftUI - Setting function ID to post.idSwiftUI - 将函数 ID 设置为 post.id
【发布时间】:2021-09-17 14:10:08
【问题描述】:

在我的函数中,我试图将 (id:) 设置为 post.id。 Post 和 ID 在 PostModel 中,我将其引用为 var post : PostModel。但是,使用我当前的代码,我收到以下错误:

在初始化之前使用的变量“self.post”

在所有存储的属性被初始化之前,在方法调用“getComments”中使用的`self'

从初始化器返回而不初始化所有存储的属性

我的应用程序这部分的代码在这里:

import SwiftUI
import Firebase

class CommentsViewModel : ObservableObject{
    
    @Published var comments : [CommentsModel] = []
    @Published var noComments = false
    @Published var newComment = false
    @Published var commentTxt = ""
    
    var post : PostModel
    
    let ref = Firestore.firestore()
    let uid = Auth.auth().currentUser!.uid
    
    init() {
        getComments(id: post.id) //this has to resort to post.id
    }
    
    func getComments(id: String) {
//code for function
}

在我的 getComments 函数中,我试图像这样调用“id”: ref.collection("Posts").document(id).collection("Comments").addSnapshotListener

如有任何帮助,将不胜感激。

【问题讨论】:

  • 该错误告诉您,如果没有正确实例化对象,您将无法从 self 访问任何属性或方法。在您的情况下,由于您的类有一个不是可选的post 属性,因此您需要在初始化时定义正确的值,然后再调用getComments(id:)

标签: ios xcode firebase google-cloud-firestore swiftui


【解决方案1】:

你可以这样做:

var post: PostModel    // <--- not initialised
init(post: PostModel) {
    self.post = post   // <--- now initialised
    getComments(id: post.id) //this has to resort to post.id
}

var post = PostModel(...) // <--- initialised
init() {
    getComments(id: post.id) //this has to resort to post.id
} 

【讨论】:

  • 我这样做了,但我遇到了其他错误。特别是在这里:@StateObject var commentsData = CommentsViewModel() - 调用中缺少参数“post”的参数所以我在 () 中添加 post: PostModel,我得到无法将类型“PostModel.Type”的值转换为预期的参数类型“PostModel”
  • 我也试过参数中的“post:post”,还是报错。不确定从这里去哪里。
  • 向我们展示您正在使用的代码,因为您的 cmets 没有意义。 cmetsData是什么,参数中的“post:post”是什么?您可以编辑您的问题,向我们展示您的尝试。
  • 当我可以访问我的计算机时,我会稍微编辑我的问题。我已经解决了我的问题 - post.id 没有被传递给 CommentsViewModel。我需要弄清楚如何在 PostRow.swift(视图)和 CommentsViewModel(模型)之间传递 post.id。
猜你喜欢
  • 2021-09-19
  • 1970-01-01
  • 1970-01-01
  • 2012-04-06
  • 1970-01-01
  • 2021-08-27
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
相关资源
最近更新 更多