SwiftUI应用程序在模拟器中运行良好,但在预览中无法正常运行

zte4gxcn  于 2022-12-22  发布在  Swift
关注(0)|答案(1)|浏览(243)

我正在尝试在Xcode中实现预览。这只是一个用Swift编写的简单测试应用程序。从Realm数据库中抓取行并列出它们。
当我在模拟器中构建/运行时,它工作正常,但ContentView_Preview中没有显示任何数据。
App in SimulatorApp in Preview
下面是代码:

import SwiftUI
import RealmSwift

struct HeaderView: View {
    var body: some View {
        HStack(alignment: .firstTextBaseline) {
            Text("Time Spent").font(.largeTitle)
            Text("or waisted...").font(.headline)
        }
    }
}

struct GroupListView: View {
    @ObservedResults(TaskGroup.self) var taskGroups
    var body: some View {
        NavigationView {
            // Nothing from here shows in the preview.. but shows fine in the simulator
            List(taskGroups) {
                Text("Group: " + $0.name)
            }
            .navigationTitle("Task Groups (\(taskGroups.count))")
            // Grrr
        }
    }
}

struct FooterView: View {
    var body: some View {
        HStack {
            Text("🤬 Grr.. Preview isn't working.")
            Spacer()
            Text("Simulator works fine though.")
        }
    }
}

struct ContentView: View {
    var body: some View {
        VStack(alignment: .leading) {
            HeaderView()
            GroupListView()
            FooterView()
        }
        .padding()
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

我已经找了好几个小时,尝试了各种不同的建议。没有运气。任何帮助都将是美妙的。

dgiusagp

dgiusagp1#

在预览中taskGroups很可能是空的。你可以通过粘贴类似

if taskGroups.isEmpty {
    Text("test")
}

在预览时,您应该插入一些占位符内容。根据Realm的工作方式,可能已经有一种机制可以执行此操作,或者您可能需要创建一个允许您执行此操作的抽象。

相关问题