Web サービスの呼び出しによって配列が更新されるたびに、配列を使用してゲーム情報を表示しようとしています。配列は正常に読み込まれていますが、実行時に次のようになります。
汎用構造体 'ForEachWithIndex' では、'Binding<[MatchData]>' が 'RandomAccessCollection' に準拠している必要があります
私のScrollView:
ScrollView{
ForEach(GameCenterHelper.helper.$MatchList, id: \.self) {row in
ext("\(row.id)")
}
}
配列の私の宣言:
@State var MatchList: [MatchData] = [MatchData]()
そしてMatchData:
class MatchData : Identifiable {
var id: String
var LocalPlayer: Player
var RemotePlayer: Player
init(_ match: GKTurnBasedMatch) {
let local = match.participants[0].player!
let remote = match.participants[1].player ?? GKPlayer()
self.id = match.matchID
LocalPlayer = Player(Alias: local.alias
, DisplayName: local.displayName
, TeamPlayerId: local.teamPlayerID
, PlayerId: local.gamePlayerID
)
RemotePlayer = Player(Alias: remote.alias
, DisplayName: remote.displayName
, TeamPlayerId: remote.teamPlayerID
, PlayerId: remote.gamePlayerID
)
}
}
確かに、状態を使用して ScrollView を更新しようとしたのはこれが初めてですが、予想よりもはるかに難しく、コードで何が間違っているのかわかりません。