2

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 を更新しようとしたのはこれが初めてですが、予想よりもはるかに難しく、コードで何が間違っているのかわかりません。

4

1 に答える 1