无法将方法声明为公共方法,因为其参数使用内部类型

时间:2018-09-25 11:26:32

标签: ios swift core-data swift4

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

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

我得到一个构建错误:

  

由于方法的参数使用内部类型,因此无法将其声明为公共方法

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Entity2应该明确声明为 public

public class Entity2{
    ...
}

答案 2 :(得分:0)

您正在使用扩展名,为什么要在以下位置使用public:

@NSManaged public func addEntity1toEntity2Object(_ value: Entity2)

答案 3 :(得分:0)

将其更改为私有吗?

@NSManaged private func addEntity1toEntity2Object(_ value: Entity2)