ObservableObject 的问题
Posted
技术标签:
【中文标题】ObservableObject 的问题【英文标题】:Issue with ObservableObject 【发布时间】: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
【参考方案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 声明 如果代码改变了就不会是同样的错误了...看看所有的地方 - 有些东西被遗忘了。以上是关于ObservableObject 的问题的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 ObservableObject 更新 UIViewRepresentable
在子视图中更新 ObservableObject 的 @Published 变量
如何确认 AppDelegate 的 ObservableObject?