我正在尝试跨不同文件访问变量,基本上是在
ContentView
和子视图之间。@State private var
中创建了一个 ContentView
,并在我的子视图中创建了 @Binding var
。 [String: Int]
类型的字典,我正在尝试计算 PDF 中单词的频率。
当我对字典中的项目进行排序并使用前缀获取前 5 个项目时,我希望更新 var,以便我可以通过内容视图在应用程序本身中显示它。
错误产生于
topFive = mostFrequent.prefix(5)
。 struct ContentView: View {
@State private var documentUrl: URL?
@State private var topFive: [String] = []
var body: Some View {
EmptyView().sheet(item: $documentUrl { url in PDFComponent(topFive:$topFive, url: url)
SheetView()
}
}
struct PDFComponent: UIViewRepresentable {
@Binding var topFive: [String]
let documentContent = NSMutableAttributedString()
func updateView(_ uiView: PDFView, context: Context) {
enumerate(in: docSubstance.string) {
topFive = mostFrequent.prefix(5)
}
}
}
}
您在 topFive 中获取了一个子字符串数组,请尝试使用它来获取一个字符串数组:
topFive = mostFrequent.prefix(5).map{String($0)}
就像之前的答案所说,这是因为结果类型是ArraySlice
另一种方法
topFive = Array(mostFrequent.prefix(5))