Swiftui似乎无法与Cocoapods和Firebase一起正常使用

时间:2019-10-29 18:33:29

标签: ios swift firebase-realtime-database cocoapods swiftui

我正在尝试使用SwiftUI创建一个iOS应用。我的数据存储在Google Firebase实时数据库中。我将数据提取到ObservableObject,以便在添加或删除数据时可以动态加载UI。 但是由于某种原因,对于Text(),我总是会收到错误消息“表达式的类型是模棱两可的,没有更多上下文”。

我已经尝试删除if语句和Text(),但是在其他地方却遇到了错误。例如。我还必须写

HStack{ ... }.padding(.leading, CGFloat(20))

如果我不将20转换为CGFloat,则会收到错误“'CGFloat'无法转换为'CGFloat?'”。 我知道SwiftUI的错误消息还不够好,因为将近90%的代码错误会导致一些模糊的bla错误。但是在这里,我真的不知道这些错误是从哪里来的。

import SwiftUI

struct IngredientsTab: View {

    @ObservedObject var ingredientsVM: IngredientViewModel = IngredientViewModel()

    var body: some View {

        NavigationView {
            List {
                ForEach(ingredientsVM.ingredients, id: \.self){ (ingredient) in
                    NavigationLink(destination: IngredientDetailView(ingredient: ingredient)){
                        VStack {
                            HStack {
                                Text(ingredient.name)
                                Spacer()

                                if (Type.NONALC == ingredient.type) {
                                    self.modifier(LabelViewModifier(label: "Non-alcoholic", backgroundColor: .green))
                                } else {
                                    self.modifier(LabelViewModifier(label: "Alcoholic", backgroundColor: .red))
                                }
                            }

                            if (ingredient.pieceGood) {

                                HStack {
                                    Image(systemName: "checkmark.circle.fill")
                                        .foregroundColor(Color.green)
                                    Text("Piece good") // Here I'm getting the error
                                    Spacer()
                                }
                                .padding(.leading, 20)
                            }
                        }
                    }
                }
            }
        }
    }
}

所以它似乎与SwiftUI有某种联系(因为它显然还不能完美运行),但也与Cocoapods / Firebase有关。在另一个项目中,我有一个类似的方法,但是没有使用任何Pod,并且工作正常。

1 个答案:

答案 0 :(得分:1)

我终于找到了问题。 我的成分继承自Identifiable,但也继承自NSObject。结合一些错误的构造函数并编写

id: \.self
在ForEach循环中的

导致了这种奇怪的行为。我将我的成分更新为正确的模型,并从ForEach循环中删除了上面的行,然后起作用了。

谢谢您的帮助!

PS:它与任何Pod或F​​irebase都不相关;)