如何解决SwiftUI-带私有变量的PreviewProvider
我正在使用CoreData
填充视图中的字段,该视图将转换为PDF。预览功能可以帮助设计视图,这是很好的,但是,我遇到了一个带有私有变量的障碍。具体来说,我遇到一个错误,提示"initializer is inaccessible due to 'private' protection level"
。如下所示,company
是私有变量。我可以使用预览部分中的代码来预览quote
变量的组成数据,但是,对于company
来说,这是行不通的。
struct PDFQuoteView: View {
@Environment(\.managedObjectContext) var moc
@State private var company: Company
var quote: Quote?
var body: some View {
struct PDFQuoteView_Previews: PreviewProvider {
static var previews: some View {
let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext
let newQuote = Quote.init(context: context)
let newCompany = Company.init(context: context)
newQuote.quoteNumber = "AA0202"
newCompany.name = "Acme Incorporated"
return PDFQuoteView(company: newCompany,quote: newQuote).environment(\.managedObjectContext,context)
.previewLayout(.fixed(width: 612,height: 792)) //this is the error line
}
}
解决方法
对于现有视图,可以通过添加显式init
来解决此错误,例如
struct PDFQuoteView: View {
@Environment(\.managedObjectContext) var moc
@State private var company: Company
private var quote: Quote?
init(company: Company,quote: Quote?) {
self._company = State(initialValue: company)
self.quote = quote
}
var body: some View {
...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。