Значение необязательного типа должно быть развернуто для ссылки на член, НО это для неявно развернутого необязательного свойства - PullRequest
0 голосов
/ 22 сентября 2019

Почему я получаю это?Это неявно развернутое необязательное свойство.Я не думаю, что я должен получить эту ошибку.Я попытался очистить папку сборки, удалить производные данные и закрыть Xcode.Ничего не помогло.

var questionsWrap: QuestionsWrapper

func userMadeSelection(_ responseId: Int,
                       _ myTheir: Question.Response.Selections.MyTheir,
                       _ choice: Question.Response.Selections.MyTheir.Choice) {
    guard let id = question.id else { return }
    questionsWrap.saveSelection(
        questionId: id,
        responseID: responseId,
        myTheir: myTheir,
       choice: choice
    ) { success in
        if !success {
           AlertViewController<Any>.alertFailure(
               message:  "We made a mistake and we weren't able to save your selection."
            )
        }
    }
    singleQuestionDataSource.observableQuestion.value = question
    print(#line, "userMadeSelectionImportance: \(responseId) \(myTheir) \(choice)")
    if choice.changedBetweenPolarAndNeutral(
        with: questionsWrap.question.theirInteractionStyle
        ) {
        let presenter = Question.Importance.Presenter(question)
        update(presenter?.importance)
        questionCell?.importancePresenter = presenter
    }
}

Определение метода

func saveSelection(
        questionId: Int,
        responseID: Int,
        myTheir: Question.Response.Selections.MyTheir,
        choice: Question.Response.Selections.MyTheir.Choice,
        context: Context,
        successAction: SuccessAction? = nil
        ) {

        guard let questionIndex = questions.index(of: questionId),
            let responseIndex = questions[questionIndex].responses.index(of: responseID) else {
                successAction?(false)
                return
        }

        questions[questionIndex].responses[responseIndex].set(myTheir, choice, for: context)
        let response = questions[questionIndex].responses[responseIndex]
        URL.make(
           my: response.choice(for: .my, UserDefaults.questionContext),
           their: response.choice(for: .their, UserDefaults.questionContext),
           forResponseID: responseID,
           forQuestionID: questionId,
           forContext: UserDefaults.questionContext
           ).get { jsonDict in
            successAction?(jsonDict.success)
        }
    }

К сожалению, я не знаю, какой код предоставить для повторного создания этой проблемы.

Я выхожу за пределы нормы и публикую снимок экрана, чтобы доказать, что ошибка показывает.

enter image description here

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Я понял, я изменил сигнатуру метода для saveSelection, чтобы потребовать другой параметр, но я забыл добавить значение по умолчанию или добавить аргумент в вызове.Я не знаю, почему компилятор не говорил мне об этом ...

1 голос
/ 22 сентября 2019

Обычная причина для того, чтобы увидеть это сообщение об ошибке с неявно развернутым Необязательным, заключается в том, что неявное развертывание не распространяется через назначение.Например, это законно:

    var s : String!
    print(s.count)

Но это не так:

    let s2 = s
    print(s2.count) // value must be unwrapped
...