由于“内部”保护级别,无法访问初始化程序

时间:2018-07-16 14:52:44

标签: swift xcode datepicker tvos

我知道这可能不是问这个特定问题的合适地点,但是我已经尝试联系下面的GitHub存储库的作者,并且到目前为止没有任何回应。

因此,我发现this在GitHub上特别有用,它实际上允许在tvOS上创建一个或多个“选择器”。它带有一个方便的预制日期选择器,它使用MultiPickerConfiguration类来处理其他属性中的UI配置。

但是,在通过Cocoapods拉入库之后,我似乎无法实例化自己的MultiPickerConfiguration对象。我尝试通过extension创建新的初始化程序,但是Xcode抱怨以下消息:

initializer is inaccessible due to 'internal' protection level

在这一点上我很困惑,我真的不想不必将整个.xcproj放入我的.xcworkspace

有人有什么建议吗?谢谢!

2 个答案:

答案 0 :(得分:2)

该结构需要一个公共的init方法。作者要么需要添加一个,要么可以添加一个,然后作为拉取请求提交。

  

考虑结构类型的默认成员初始化器   如果该结构的任何存储属性为私有,则为私有。   同样,如果结构的任何存储属性是文件   私有,初始化器是文件私有的。否则,初始化器   具有内部访问级别。

     

与上面的默认初始化程序一样,如果要公共结构   类型在使用时可以使用成员初始化器进行初始化   另一个模块,您必须提供一个公共的成员初始化器   自己作为类型定义的一部分。

https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html#ID21

答案 1 :(得分:1)

其他人似乎也有同样的问题,并发布了此issue

看到最后一次提交是在2018年2月,我怀疑有人会尽快修复它。您可以提交拉取请求,然后等待有人将其合并。

同时,您可以通过编辑代码来添加公共初始化程序。在左侧面板中找到广告连播的代码:Pods > Pods > TVMultiPicker > MultiPickerConfiguration.swift。开始输入,将出现一个对话框,询问您是否要解锁文件。单击“解锁”并编写您的初始化程序。