问题描述
我正在使用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 {
...