Отсутствует аргумент Swift Custom Struct из: Decoder

Привет, я использую SwiftUI и пытаюсь создать ObservableObject для одного из моих представлений.

class ResponseModelObject: ObservableObject {
    @Published var response = SongLinkAPIResponse()
}

SongLinkAPIResponse выглядит так:

public struct SongLinkAPIResponse: Codable, Equatable {
    public var entityUniqueId: String
    public var userCountry: String
    public var pageUrl: URL
    public var entitiesByUniqueId: [EntityUniqueId:Entity]
    public var linksByPlatform: [Platform.RawValue:PlatformInfo]
}

Однако моя проблема в том, что я получаю сообщение об ошибке Missing argument for parameter 'from' in call в свойстве @Published. Свойство from является декодером, но я не определил инициализацию для SongLinkAPIResponse, поэтому я не уверен, что делать?

Я уверен, что упускаю что-то простое.


person Harry Day    schedule 29.06.2020    source источник


Ответы (1)


Соответствие Codable автоматически создает init(from:) для вашего класса.

SongLinkAPIResponse() совпадает с SongLinkAPIResponse.init().

Вам нужно будет указать инициализатор в своем классе:

init() {
    // init properties here
}

В качестве альтернативы вы можете указать значения по умолчанию для своих свойств:

public struct SongLinkAPIResponse: Codable, Equatable {
    public var entityUniqueId: String = "" // some default value
    ...
}
person pawello2222    schedule 29.06.2020
comment
ааа имеет смысл, так есть ли способ создать пустой экземпляр этого объекта? Будет функция, которая вызывает API, который я собираюсь декодировать в этот объект, но мне нужен какой-то начальный объект для начала до того, как этот вызов будет сделан. - person Harry Day; 30.06.2020
comment
@HarryDay Вы можете просто указать значения по умолчанию, тогда вам не понадобится пустой init. Но при декодировании класса Codable (например, с использованием JSONDecoder) вам не нужно создавать пустой объект. - person pawello2222; 30.06.2020