0

我有一个问题,我找不到解决方案,我有一个对象的扩展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")

        }

    }

  }

}

好的,所以在另一个类中,我调用了将字典作为参数传递的 func,但是当我编写Article.createEntityWithDictionary它时,它会自动完成方法的名称,但参数的类型是Article而不是Dictionary,如果我将字典作为参数传递,XCode 会说“ NSDictionary 不是“文章”的子类型。

我在这里想念什么?

4

1 回答 1

1

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

Article.createEntityWithDictionary(dictionary)

和:

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

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

于 2014-08-19T08:41:46.483 回答