【问题标题】:Method cannot be declared public because its parameter uses an internal type方法不能声明为 public,因为它的参数使用了内部类型
【发布时间】:2018-09-25 11:26:32
【问题描述】:

我有一个为实体自动生成的访问器:

//auto-generated code:
extension Entity1{
  @objc(addEntity1toEntity2Object:)
  @NSManaged public func addEntity1toEntity2Object(_ value: Entity2)
  ...
}

我得到一个构建错误:

方法不能被声明为公共的,因为它的参数使用了一个内部类型

【问题讨论】:

    标签: ios swift core-data swift4


    【解决方案1】:

    我为您找到了解决方案: 将实体的默认 Codegen 选项从“类定义”更改为“手动/无”。在再次构建之前,您可能需要清理您的项目。选择实体时,可以在数据模型检查器中找到 Codegen 选项。然后从 Editor->Create NSManagedObject 子类创建 NSManagedObject 子类生成器。

    清理项目并构建它。

    参考这个答案选项2: https://forums.raywenderlich.com/t/chapter-2-error-bowtie-is-ambiguous-for-type-lookup-in-this-context/22386/2

    【讨论】:

      【解决方案2】:

      Entity2 应明确声明为 public

      public class Entity2{
          ...
      }
      

      【讨论】:

        【解决方案3】:

        将其更改为私有?

        @NSManaged private func addEntity1toEntity2Object(_ value: Entity2)
        

        【讨论】:

        • 你不能这样做,因为它是从核心数据自动生成的代码
        • @AviramNet 它可以通过单击关系创建,然后单击顶部栏上的编辑器 -> 创建 NSManagedObject 子类。然后将其更改为私有,并保存。
        【解决方案4】:

        你正在使用扩展,为什么你使用 public in :

        @NSManaged public func addEntity1toEntity2Object(_ value: Entity2)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-04-22
          • 1970-01-01
          • 2018-02-15
          • 1970-01-01
          • 1970-01-01
          • 2012-03-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多