我正在尝试将一些组件抽象为更小的部分。为此,我创建了以下清单:
struct ArticleList: View {
var fetchRequest: FetchRequest<Article>
var results: FetchedResults<Article> { fetchRequest.wrappedValue }
init() {
fetchRequest = FetchRequest<Article>(
entity: Article.entity(),
sortDescriptors: []
)
}
var body: some View {
ForEach(results) { article in
Text(article.name ?? "")
}
}
}
现在我有一个容器,它将显示列表组件,如果满足子组件内部的条件,还会显示一些附加内容:
struct Container: View {
var body: some View {
let articleList = ArticleList2()
return Group {
if articleList.results.isEmpty {
Text("Add")
}
articleList
}
}
}
我现在的问题是代码崩溃并出现以下异常:
Thread 1: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
进一步调试控制台会为我提供以下反馈:
(lldb) po self.results
error: warning: couldn't get required object pointer (substituting NULL): Couldn't load 'self' because its value couldn't be evaluated
调试po self.fetchRequest
工作,它包含实例的一个FetchRequest<Article>
实例。po self.fetchRequest.wrappedValue
提供与上述相同的错误self.results
。
有谁知道为什么这段代码会崩溃以及可能的解决方法是什么?
谢谢。