我正在尝试将该类声明为公共(public)类,如下所示

class RewardsAndRedemptionModel:BaseObject {
var rewardHistory :[RewardHistoryModel]!
}

这是我试图公开授课的地方,但我没有。
public class RewardHistoryModel :BaseObject  {
 var rewardValue : String!
 var recordedByName : String!
 var rewardFor : String!
}

即使我阅读了Internet上可用的文档,我也听不懂,请帮帮我。

最佳答案

编译器告诉您,由于父类(super class)是内部的,因此您不能将其公开。您知道编译器没有在说谎。

没有子类可以比其父类更容易访问。为什么?以这种方式考虑,子类具有其父类(super class)具有的所有属性和成员。如果不存在此限制,则访问修饰符将不再有用。您有一个内部类(class)。其他人继承了您的内部类并将其声明为公共(public)。现在封装被破坏了。现在可以通过子类访问您不想访问的内容。

换句话说,如果子类比其父类更易于访问,则该父类的access修饰符将失效。这就是编译器有此限制的原因:提醒您,您正在编写的内容可能会使父类(super class)的access修饰符失效。您可能做错了事。

要解决此问题,请将BaseClass及其父类(super class)声明为public。

关于ios - Swift:Class不能声明为公共(public),因为其父类是内部的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41011390/

10-09 21:26