Функция, объявленная с параметром типа Dictionary показывает другой тип параметра
У меня проблема, и я не могу найти решение, у меня есть расширение объекта Article
, который имеет функцию, которая создает объект с данными, содержащимися в словаре, передаваемом в качестве параметра функции, это код:
protocol EntityProtocol {
mutating func createEntityWithDictionary(dictionary: Dictionary<String, AnyObject>)
}
extension Article: EntityProtocol {
func createEntityWithDictionary(dictionary: Dictionary<String, AnyObject>) {
var article: Article! = ModelManager.instance.insertNewEntityName("Article") as Article
for (key: String, value: AnyObject) in dictionary {
switch key {
case kContentTypeKey:
article.contentType = value as String
case kEditorsPickKey:
article.editorsPick = value as Bool
default:
println("Default")
}
}
}
}
Итак, в другом классе я вызываю функцию, передавая словарь в качестве параметра, но когда я пишу Article.createEntityWithDictionary
автозаполнение имени метода, но тип параметра Article
вместо Dictionary
и если я передаю словарь в качестве параметра, XCode говорит: "NSDictionary не является подтипом" Article "".
Что мне здесь не хватает?
1 ответ
Хорошо, я наконец нашел, в чем была проблема. Дело в том, что я пытался получить доступ к Article как к классу, а не как к объекту, поэтому он не мог получить доступ к этому методу. Я решил это, изменив линию
Article.createEntityWithDictionary(dictionary)
с:
ArticleManager.instance.createArticle().fillEntityWithDictionary(dictionary)
Делая это, когда мы обращаемся к методу fillEntityWithDictionary (который был методом createEntityWithDicitonary) перед его выполнением, я создаю объект Article в ArticleManager, который представляет собой синглтон, который управляет всеми действиями, относящимися к объектам типа Article. После того, как у вас есть действительный объект, нет проблем с выполнением fillEntityWithDictionary.