2

每当通过调用 Web 服务更新数组时,我都会尝试使用数组来显示一些游戏信息。数组填充正常,但在运行时我得到:

通用结构 'ForEachWithIndex' 要求 'Binding<[MatchData]>' 符合 'RandomAccessCollection'

我的滚动视图:

ScrollView{
    ForEach(GameCenterHelper.helper.$MatchList, id: \.self) {row  in
           ext("\(row.id)")
    }
}

我的数组声明:

@State var MatchList: [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

0

无需绑定即可迭代MatchListForEach直接访问

ScrollView{
    ForEach(GameCenterHelper.helper.MatchList, id: \.self) {row  in // << no $
           ext("\(row.id)")
    }
}
于 2020-08-09T09:33:22.413 回答