Нет точных совпадений в вызове инициализатора при инициализации данных в AppStorage

Я изучаю, как хранить пользовательские типы в AppStorage, и столкнулся с проблемой. В этом упрощенном примере я пытаюсь сохранить пустой массив Int в AppStorage после создания представления.

Следующий код дает мне ошибку, No exact matches in call to initializer . Я знаю, что эта ошибка обычно означает, что где-то есть несоответствующие типы, но я не уверен, что это за типы должен и как это исправить.

struct test: View {
    
    init() {
        let emptyList = [Int]()
        guard let encodedList = try? JSONEncoder().encode(emptyList) else { return }
        self.storedList = encodedList
    }
    
    @AppStorage("stored_list") var storedList: Data      //NO EXACT MATCHES TO CALL IN INITIALIZER
    
    //"body" implementation not shown
}

Почему возникает эта ошибка и как ее исправить?

Что вы делаете со всеми переменными в инициализации? Убедитесь, что вы публикуете настоящий код. А что такое player_list?

Joakim Danielson 23.04.2022 10:34

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

Asperi 23.04.2022 10:35

JoakimDanielson, простите за плохо сделанный пример! Я отредактировал его, чтобы сделать его проще. Также @Asperi, это весь код из примера, который я использовал для его воспроизведения. Надеюсь, это поможет!

Charlie Reeder 23.04.2022 23:04
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
1
3
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Он должен быть либо со значением по умолчанию, либо необязательным, поэтому правильные варианты

@AppStorage("stored_list") var storedList: Data = Data()

или

@AppStorage("stored_list") var storedList: Data?

Другие вопросы по теме