3 votes

Impossible de convertir une valeur de type 'X' en un argument attendu de type 'X'.

Xcode 8 et Swift 3 m'ont rendu vraiment triste aujourd'hui :(

Jetez-y un coup d'œil et dites-moi si vous avez déjà eu ce genre de problème et s'il est possible de le résoudre. J'ai essayé différentes solutions, dont les suivantes :

  1. Cmd + Shift + K
  2. Cmd + Shift + Option + K
  3. Supprimer les données dérivées
  4. Changement de structure utilisée (c'est une structure imbriquée dans mon code), aplatie, changée en une structure vraiment basique.

Sad Xcode error

Mise à jour 1 :

Voici le code (bien que je pense que ce n'est pas nécessairement un problème lié à mon implémentation), il se trouve dans ma cible de tests :

let viewModelStub: Quiz.NewRoundDetails.ViewModel = Quiz.NewRoundDetails.ViewModel(roundNumber: "", score: "", proposedAnswerParts: [
            Quiz.NewRoundDetails.ViewModel.AnswersForComponent(answers: []),
            Quiz.NewRoundDetails.ViewModel.AnswersForComponent(answers: []),
            Quiz.NewRoundDetails.ViewModel.AnswersForComponent(answers: [])])

_ = viewController.view
viewController.display(roundModel: viewModelStub)

Voici les structures :

struct Quiz {
    struct NewRoundDetails {
        struct Response {
            let roundNumber: Int
            let score: Int
        }
        struct ViewModel {
            let roundNumber: String
            let score: String
            let proposedAnswerParts: [Quiz.NewRoundDetails.ViewModel.AnswersForComponent]

            struct AnswersForComponent {
                let answers: [String]
            }
        }
    }
}

Et dans le viewController les choses ressemblent à ça :

func display(roundModel: Quiz.NewRoundDetails.ViewModel) {
    ...
}

Rien de si inhabituel, je pense. Je viens de découvrir une autre chose - le code fonctionne bien du côté de la cible de l'application, il ne fonctionne pas sur la cible des tests.

Je n'ai pas d'autres idées pour le moment... Pouvez-vous m'aider ? J'ai également créé un radar

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X