我有一个问题,我找不到解决方案,我有一个对象 Article
的扩展,它有一个函数,它用字典中包含的数据创建对象作为参数传递给 func,这是代码:
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")
}
}
}
}
好的,所以在另一个类中,我调用传递字典作为参数的 func,但是当我编写 Article.createEntityWithDictionary
时,它会自动完成方法的名称,但参数的类型是 Article
而不是 Dictionary
,如果我将字典作为参数传递,XCode 会说“NSDictionary 不是‘Article’的子类型”。
我在这里错过了什么?
最佳答案
好吧,我终于找到问题所在了。问题是我试图像类而不是对象一样访问 Article,所以它无法访问该方法。我通过改变线路解决了这个问题
Article.createEntityWithDictionary(dictionary)
与:
ArticleManager.instance.createArticle().fillEntityWithDictionary(dictionary)
这样做,当我们在执行前访问方法 fillEntityWithDictionary(这是方法 createEntityWithDicitonary)时,我在 ArticleManager 中创建一个对象 Article,它是一个单例,管理与 Article 类型的对象相关的所有操作。有了有效的对象后,执行fillEntityWithDictionary就没有问题了。
关于ios - 用 Dictionary 类型的参数声明的函数显示另一个参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25378150/