Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 结合来自两个不同阵列的两个观测对象的快速用户界面_Arrays_Swift_Swiftui - Fatal编程技术网

Arrays 结合来自两个不同阵列的两个观测对象的快速用户界面

Arrays 结合来自两个不同阵列的两个观测对象的快速用户界面,arrays,swift,swiftui,Arrays,Swift,Swiftui,我尝试组合以下类型的两个对象 @ObservedObject var expenses = Expense() @ObservedObject var recipes = Recipe() 阵列工作得很好,一切都很好 现在我想在ForEach中展示数组中的所有项 var body: some View { TabView { NavigationView { List { ForEach(Array(zip

我尝试组合以下类型的两个对象

@ObservedObject var expenses = Expense()
@ObservedObject var recipes = Recipe()
阵列工作得很好,一切都很好

现在我想在ForEach中展示数组中的所有项

    var body: some View {
    TabView {
        NavigationView {
            List {
                ForEach(Array(zip(expenses.items, recipes.ReItems)),id: \.0){ item in
                    HStack{
                        VStack(alignment: .leading){
                            Text(item.beschreibung)
                                .font(.headline)
                            Text(String(item.menge) + " \(item.unitType)")
                        }
                    }
                }
                .onDelete(perform: removeItems)
            }
但这会引发一个错误-“编译器无法在合理的时间内对此表达式进行类型检查;请尝试将该表达式拆分为不同的子表达式”

我的第一个想法是将数组保存在一个变量中,如本文中的stackoverflow

但说实话,这看起来不太好。。它也抛出了一个异常;o


谢谢你的帮助

尝试将其拆分,如下所示(这将为编译器显式地提供zip类型检查结果)

案文应为:

Text(item.0.beschreibung).font(.headline)
Text(String(item.0.menge) + " \(item.0.unitType)")

或者使用item.1,视情况而定。

@Ashtari,真的
item
只是我的演示假设,因为您没有提供您的物品的真实类型。显然,应该有您的.items类型。要获得具有复制粘贴功能的答案,您必须提供有问题的复制粘贴可测试代码。;)经过一个漫长的夜晚,sry有点累是的,现在开始工作了。谢谢:)
var body: some View {
    TabView {
        NavigationView {
            List {
              self.listContent(items: Array(zip(expenses.items, recipes.ReItems)))
            }
    ...


private func listContent(items: [Item]) -> some View {
    ForEach(items, id: \.0){ item in
        HStack{
            VStack(alignment: .leading){
                Text(item.beschreibung)
                    .font(.headline)
                Text(String(item.menge) + " \(item.unitType)")
            }
        }
    }
    .onDelete(perform: removeItems)
}
Text(item.0.beschreibung).font(.headline)
Text(String(item.0.menge) + " \(item.0.unitType)")