'Object' 对于 Xcode 9 中此上下文中的类型查找不明确

'Object' is ambiguous for type lookup in this context in Xcode 9

我想为 iOS 11 更新我的应用程序,但遇到了这个问题。这是我当前的代码:

protocol DataSourceDelegate: class {
    associatedtype Object

    func cellIdentifierForObject(object: Object) -> String
    func swipeToDeleteObject(object: Object)
}

此协议用于我的视图控制器之一:

extension TransactionsViewController: DataSourceDelegate {
    func cellIdentifierForObject(object: Object) -> String {
        return "Cell"
    }

    func swipeToDeleteObject(object: Object) {
        object.managedObjectContext?.performChanges {
            object.managedObjectContext?.delete(object)
        }
    }
}

现在我得到 Object 类型的错误:

'Object' is ambiguous for type lookup in this context

这一行:

func cellIdentifierForObject(object: Object) -> String { ... }

对于我来说,出现这个问题是因为我的项目中还有其他一些对象类型。我尝试将协议或 class 名称放在名称前面,但仍然出现错误。

在我的例子中,我有这种歧义,因为 class 是在 swift 文件中声明的,并且也是由我的数据模型自动生成的。

如果您已经在 swift 文件中声明了 class,请确保为它禁用代码生成。

  1. Select 您在 xcdatamodeld 中的实体
  2. 打开第三个选项卡,数据模型检查器:
  3. 将 Codegen 设置为 Manual/None

对我来说,错误的原因是两种不同的 Cocoapods 的 Class 同名。如果您要将 pods 集成到 VC,请尝试通过清除 VC 文件顶部的 'Import ...' 行来删除其中的一些内容。