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

标签 ios ios7 swift ios8 xcode6-beta5

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

相关文章:

ios - 使用 iOS8 SDK 在 iOS7 的 UICollectionViewCell 中调整 UIViews 的大小

ios - 如何调用父类(super class)形式子类SpriteKit的方法

swift - 如何在 Mac OS Swift 应用程序中重新获得/设置焦点

ios - 两个类的 Swift 可选继承

ios - ios 中密码的 AES128 加密的正确方法

ios - 在动画期间观察 UIView 框架的变化

objective-c - 如何在 iOS 应用程序中捕获用户的手写签名

ios - iOS 7 中忽略条形按钮项目色调颜色

ios - 如何将图像加载到 View ?

iOS:如何在同一代码 xcode swift 中为设备和模拟器添加不同的框架?