【问题标题】:Issue with ObservableObjectObservableObject 的问题
【发布时间】:2020-08-09 13:14:49
【问题描述】:

我有一个设置为 ObservableObject 的类:

class MatchData : Identifiable,  ObservableObject {
    
    @Published var id: Int
    
    @Published var LocalPlayer: Player
    @Published var RemotePlayer: Player
    
    init(_ match: GKTurnBasedMatch, id: Int) {
        
        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
            
        )
        self.id  = id
    }
}

然后我在另一个班级:

@ObservedObject var MatchList: [MatchData] = [MatchData]()

但是,这会产生错误:

通用结构 'ObservedObject' 要求 '[MatchData]' 符合 '可观察对象'

我相信我的类符合 ObservableObject,但是我似乎无法摆脱这个错误。

【问题讨论】:

  • 您不能将数组 [MatchData] 作为观察对象属性,因为它是不可观察的。只能观察到 observable,例如 @ObservedObject var matchData: MatchData

标签: ios swift swiftui


【解决方案1】:

您可以为MatchData 的集合创建显式可观察类,例如

class MatchList: ObservableObject {
   @Published var data: [MatchData] = [MatchData]()
}

然后你就可以在视图中使用了

@ObservedObject var matchList: MatchList

【讨论】:

  • 谢谢,我试过 ` class MatchList : ObservableObject { @Published var data: [MatchData] = [MatchData]() } @ObservedObject var matchList: MatchList` 但这仍然会产生相同的错误**编辑- 忽略我,我需要删除 MatchData 类中的 ObservableObject 声明
  • 如果代码改变了就不会是同样的错误了...看看所有的地方 - 有些东西被遗忘了。
猜你喜欢
  • 2021-11-03
  • 2021-02-27
  • 1970-01-01
  • 2020-08-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多