У меня есть несколько структур, которые реализуют протокол Resource
. Это определяет, что они должны иметь переменную extendedInfo
, которая соответствует протоколу ExtendedInfo
, чтобы предоставить возможность инициализировать их с помощью json через init(json: [String: AnyObject]
. Я пытаюсь предоставить способ динамического создания их экземпляров с помощью JSON, предоставляя правильный тип ExtendedInfo
и назначая его переменной extendedInfo
структуры. Однако я получаю сообщение об ошибке Argument labels '(json:)' do not match any available overloads
при попытке создать их экземпляры через их dynamicType
protocol Resource {
associatedtype ExtendedInfoTypeAlias: ExtendedInfo
var extendedInfo: ExtendedInfoTypeAlias? { get set }
}
protocol ExtendedInfo {
init(json: [String: AnyObject])
}
struct User: Resource {
typealias ExtendedInfoTypeAlias = UserExtendedInfo
let name: String = "Name"
var extendedInfo: UserExtendedInfo?
}
struct UserExtendedInfo: ExtendedInfo {
let age: Int?
init(json: [String: AnyObject]) {
age = json["age"] as? Int
}
}
let user = User()
let sampleJSON = ["age": 50]
let userExtendedInfo = user.extendedInfo.dynamicType.init(json: sampleJSON) // Argument labels '(json:)' do not match any available overloads
user.extendedInfo = userExtendedInfo
Есть идеи, ребята? Спасибо