【问题标题】:how do I get rid of this simple SwiftUI error?如何摆脱这个简单的 SwiftUI 错误?
【发布时间】:2021-08-29 15:23:34
【问题描述】:

我只想从事务变量中获取所有记录并将其保存到一个数组中。我试过了,我得到的只是这个不断的错误。请帮助我,我只想将所有模型(记录)保存在一个数组中。

类型 '()' 不能符合 'View'

   @State private var transactions: [Transactions] = [Transactions]()
   ForEach(transactions, id: \.self) { transaction in
                        timexxx[0] = transaction.timexx ?? "0"
                        Text(timexxx[0] ?? "0")

                    
                }

enter image description here

【问题讨论】:

  • 您不能在视图生成器函数中修改变量。您正在使用此行执行此操作:timexxx[0] = transaction.timexx ?? "0"。如果每次都替换相同的对象,不确定为什么需要它?为什么不只显示文本? Text(transaction.timexx ?? "0" ?? "0")
  • 这是一个简单的问题。 Transaction.timexx 必须保存在另一个数组下。你说对了 ?我在哪里做呢?我该怎么做。 ?
  • 不,我不明白。 timexxx如何创建,以后如何使用?

标签: arrays swiftui


【解决方案1】:

就像@multiverse 所建议的那样

ForEach 循环需要某种 View,但您正在给它或试图给它一个“数组”(它只想要 View)

这是一个更新的代码,您可以在其中为 ForEach 提供所需的内容,并将其附加到您的 timexxx 数组

ForEach(Array(transactions.enumerated()), id: \.offset) { (offset, transaction) in
              Text(transaction.timexx ?? "\(offset)")
                .onAppear {
                    timexxx[offset] = transaction.timexx ?? "\(offset)"
                }
         }

更新

你的问题

“我如何用一个简单的“For”循环来做到这一点?假设我想在一个简单的类中做这个操作。”

这就是它的完成方式。

我删除了视图Text

for (i, transaction) in transactions.enumerated() {
    timexxx[i] = transaction.timexx ?? "0"
}

【讨论】:

  • 我的问题是......我如何用一个简单的“For”循环来做到这一点?假设我想在一个简单的类中执行此操作。不过。
  • 忘记查看的东西。
【解决方案2】:

好的,所以这也是我在学习 SwiftUI 时遇到的错误(我还是个初学者),所以现在我们需要了解,这个错误实际上意味着什么,在这种情况下,ForEach 循环需要一些一种视图,但您正在给出它或试图给出一个“数组”(它只想要视图)....

如果您希望将值传输到数组,只需创建一个函数并执行此操作.....

说你有一个班级,你在里面做

@Published var song = [Song]()

那么你所做的就是在像 loadData() 这样的函数中

objects 是您想要传输其元素的数组,并且这些元素很可能属于像 Song 这样的结构(如果不是更简单,只需使用它所具有的任何类型,如 Int、String 等),这样您的所有元素将从对象转移到歌曲

 func loadData() {
        song = objects.map {
            artist in
            Song(album: artist.album, artistImage: artist.artistImage)
        
    }
    
 }

在这里我添加了从一个数组转移到另一个数组的最简单方法

var objects = [1,2,3,4,5]
 var song = [Int]()
 func loadData() {
    song = objects.map { $0 }
    
 }
 
 loadData()
 print(song)



//[1,2,3,4,5]
 

【讨论】:

    猜你喜欢
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    相关资源
    最近更新 更多