#ios #swift #swiftui
#iOS #swift #swiftui
Вопрос:
У меня есть класс, который настроен как 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.&amePlayerID
)
RemotePlayer = Player(Alias: remote.alias
, DisplayName: remote.displayName
, TeamPlayerId: remote.teamPlayerID
, PlayerId: remote.&amePlayerID
)
self.id = id
}
}
а затем в другом классе у меня есть:
@ObservedObject var MatchList: [MatchData] = [MatchData]()
Однако это приводит к ошибке:
Общая структура ‘ObservedObject’ требует, чтобы ‘[MatchData]’ соответствовала ‘ObservableObject’
Я полагал, что мой класс соответствует ObservableObject, однако, похоже, я не могу избавиться от этой ошибки.
Комментарии:
1. Вы не можете использовать array, [MatchData], как свойство observed object, поскольку оно не является наблюдаемым. Можно наблюдать только observable, например
@ObservedObject var matchData: MatchData
Ответ №1:
Вы можете создать явный наблюдаемый класс для сбора MatchData
, например
class MatchList: ObservableObject {
@Published var data: [MatchData] = [MatchData]()
}
и тогда вы сможете использовать в представлении
@ObservedObject var matchList: MatchList
Комментарии:
1. Спасибо, я попробовал ` class MatchList : ObservableObject { @Published var data: [MatchData] = [MatchData]() } @ObservedObject var MatchList: MatchList`, Но это по-прежнему выдает ту же ошибку ** Редактировать — игнорируйте меня, мне нужно было удалить объявление ObservableObject в классе MatchData
2. Это не может быть та же ошибка, если код изменен… посмотрите все места — что-то забыто.