使用Dictionary类型参数声明的函数显示另一个参数类型

时间:2014-08-19 07:47:04

标签: ios ios7 swift ios8 xcode6-beta5

我遇到了问题,我无法找到解决方案,我有一个对象Article的扩展,它有一个func,用于创建包含在a中的数据的对象字典作为参数传递给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 {{1}},如果我传递字典作为参数XCode说&#34; NSDictionary不是&#39;&#39;&#34;&#34;。

的子类型

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

好的,我终于找到了问题所在。问题是我试图像一个类而不是像一个对象一样访问Article,所以它无法访问该方法。我解决了它改变了行

Article.createEntityWithDictionary(dictionary)

使用:

ArticleManager.instance.createArticle().fillEntityWithDictionary(dictionary)

这样做,当我们在执行它之前访问方法fillEntityWithDictionary(它是方法createEntityWithDicitonary)时,我在ArticleManager中创建一个对象Article,它是一个管理与Article类型对象相关的所有动作的单例。拥有一个有效的对象后,执行fillEntityWithDictionary没有问题。