Swift 参数类型“XXX”期望是类或类约束类型的实例

Jun*_*ung 4 ios swift swiftui

我是 Swift 和 SwiftUI 的初学者。我正在尝试将 ID 设置为 ScrollView 中的 View,这样我就可以使用 ScrollViewReader 滚动到顶部位置(第一项)。我遇到的困难是当我尝试获取数组的索引时,我收到错误Argument类型“XXX”应为类或类约束类型的实例。我该如何解决这个问题?谢谢

在此输入图像描述

import SwiftUI

struct PokedexListView: View {
    let pokemons: [Pokemon]
    let hasMoreData: Bool
    
    var fetchListener: () -> Void
    
    var body: some View {
        NavigationView {
            ScrollViewReader { scrollView in
                ScrollView {
                    LazyVStack {
                        ForEach (pokemons) { pokemon in
                            PokemonCellView(pokemon: pokemon)
                                .id(self.getID(pokemon: pokemon))
                        }
                        if hasMoreData {
                            LoadingFooterView()
                                .onAppear { fetchListener() }
                        }
                    }
                }
                .overlay(
                    ScrollTopBtnView(toTop: { scrollView.scrollTo(0) })
                        .padding(.trailing)
                        .padding(.bottom, 80),
                    alignment: .bottomTrailing
                )
                .navigationTitle("Pokedex")
            }
        }
    }
    
    func getID(pokemon: Pokemon) -> Int {
        return pokemons.firstIndex { p in p === pokemon  } ?? -1
    }
}

Run Code Online (Sandbox Code Playgroud)

Sh_*_*han 10

===用。。。来代替==

return pokemens.firstIndex { p in p.id == pokemon.id  } ?? -1  
Run Code Online (Sandbox Code Playgroud)

===用于比较非原始/结构数据类型的对象,或使pokemon类型class不是struct