【问题标题】:SwiftUI - Randomly select two values from a databaseSwiftUI - 从数据库中随机选择两个值
【发布时间】:2020-05-25 09:15:42
【问题描述】:

在数据库中,我有一个具有两个属性(“name1”、“name2”)的实体“Order”。我想在我的视图中随机显示一个值“name1”和一个值“name2”,但两个显示的值匹配(具有相同的 UUID)。

所以我使用了代码:“order.randomElement()!.name1”和“order.randomElement()!.name2”,但两个值不匹配。你有解决办法吗?

我的代码:

struct ContentViewa: View {
        @Environment(\.managedObjectContext) var managedObjectContext
        @FetchRequest(entity: Order.entity(), sortDescriptors: [], predicate: NSPredicate(format: "name1 != %@"))
        var order: FetchedResults<Order>

        var body: some View {

            VStack {
                VStack {
                    Section {
                        Text(order.randomElement()!.name1 )
                    }
                    Divider()
                    Section {
                        Text(order.randomElement()!.name2)
                    }
                }

                Button(action: {
                }){
                    Text("Next")
                }
            }
        }
    }

【问题讨论】:

  • 相同的 UUID 意味着它必须是同一个对象,所以为什么不创建一个初始化为 order.randomElement() 的属性并从该属性中获取 name1 和 name2。

标签: swift database xcode core-data swiftui


【解决方案1】:

这是可能的方法

struct ContentViewa: View {
        @Environment(\.managedObjectContext) var managedObjectContext
        @FetchRequest(entity: Order.entity(), sortDescriptors: [], predicate: NSPredicate(format: "name1 != %@"))
        var orders: FetchedResults<Order>

        @State private var selectedOrder: Order? = nil
        var body: some View {

            VStack {
                VStack {
                    Section {
                        Text(selectedOrder?.name1 ?? "default")
                    }
                    Divider()
                    Section {
                        Text(selectedOrder?.name2 ?? "default")
                    }
                }

                Button(action: {
                }){
                    Text("Next")
                }
            }
            .onAppear { self.selectedOrder = self.orders.randomElement }
        }
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2023-03-22
    • 1970-01-01
    • 2011-10-24
    • 2014-05-15
    相关资源
    最近更新 更多