У меня есть ряд структур, которые реализуют протокол Resource
. Это определяет, что они должны иметь переменную extendedInfo
, которая соответствует протоколу ExtendedInfo
, чтобы предоставить возможность инициализировать их с помощью json через init(json: [String: AnyObject]
. Я пытаюсь предоставить способ динамически создавать их с помощью JSON, предоставляя нужный тип ExtendedInfo
и назначая его переменной struct 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
Любые идеи, ребята? Благодаря
Удивительный. Спасибо чувак! – trundrumbalind
@trundrumbalind С удовольствием помогите :) – Hamish