【发布时间】:2014-10-12 05:49:33
【问题描述】:
我遇到了一个问题,我找不到解决方案,我有一个对象 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' 的子类型”。
我在这里错过了什么?
【问题讨论】:
-
请尝试使用新的字典语法糖:
[String:AnyObject]而不是Dictionary<String, AnyObject> -
已完成,但仍然出现错误 'NSDictionary' is not a subtype of 'Article'... :(
-
问题是,当我写 func 名称的开头时,自动完成显示: ([String:AnyObject]) -> Void createEntityWithDictionary(self.Article) 我不明白为什么当我明确定义我想要一本字典时,将文章类型作为参数..
标签: ios ios7 swift ios8 xcode6-beta5