基于 Swiftui @Query 创建 @State 变量

问题描述 投票:0回答:1

我有一个 SwiftData 模型,我想将它与应用程序启动时创建的 @Query 一起使用。然后我想将 @State 变量基于该 @Query 变量。

像这样(这就是我拍摄的目的,我知道它不起作用):

struct Test_Beta_1App: App {
    @Environment(\.modelContext) var context

    @Query var users: [User]

    var randomHobby: String = {
         users.map { $0.hobby }.randomElement()!
    }


    ...
}

再次,当应用程序启动时,我希望能够随机选择一个爱好,然后将 randomHobby 作为 @State 变量传递到视图中。

但这会导致一堆错误,包括“属性包装器无法应用于计算属性”。我想我知道你不能将 @State 与计算属性一起使用,但我不知道如何创建这个默认值,该默认值稍后可以根据视图中发生的情况进行更改。

swift swiftui state computed-properties
1个回答
0
投票

好吧,我没有尝试过,但我认为这应该让你朝着正确的方向前进:

struct Test_Beta_1App: App {
    @Environment(\.modelContext) var context

    @Query var users: [User]
    @State var randomHobby = Hobby.allCases.randomElement() //This should be an Enum with all the hobbies, and be "Codable, CaseIterable, Identifiable" so you can get a random element.

    var randomHobby: String{
        users.filter({$0.hobby == randomHobby})
    }
    ...
}

如果您要查看的是所有具有该爱好的用户,则在正文中设置一个 Foreach(randomHobby)。 (这就是我认为你正在寻找的,你没有具体说明你想要实现什么)

© www.soinside.com 2019 - 2024. All rights reserved.