Swift:Class不能声明为public,因为它的Super类是内部的

Sam*_*Sam 4 xcode access-specifier ios swift swift3

我试图将该类声明为公共类,如下所示

class RewardsAndRedemptionModel:BaseObject {
var rewardHistory :[RewardHistoryModel]!
}
Run Code Online (Sandbox Code Playgroud)

这是我试图让班级公开的地方,但我不能.

public class RewardHistoryModel :BaseObject  {
 var rewardValue : String!
 var recordedByName : String!
 var rewardFor : String!
}
Run Code Online (Sandbox Code Playgroud)

即使我阅读互联网上提供的文件,我也无法得到它,请帮助我.

Swe*_*per 6

编译器告诉您不能将其公开,因为超类是内部的.你知道,编译器不会撒谎.

没有子类比其超类更易于访问.为什么?以这种方式思考,子类具有其超类具有的所有属性和成员.如果此限制不存在,则访问修饰符将不再有用.你有一个内部课程.其他人将您的内部类子类化并将其声明为公共类.现在封装被打破了.现在可以通过子类访问您不想访问的内容.

换句话说,如果子类比其超类更易于访问,则超类的访问修饰符会失效.这就是编译器有这个限制的原因:提醒你,你写的东西可以使超类的访问修饰符失效.你可能做错了.

要解决此问题,请将BaseClass其超类声明为public.


Łuk*_*uła -1

您还必须声明BaseObject类。public