SwiftUI - 从数据库中随机选择两个值

Posted

技术标签:

【中文标题】SwiftUI - 从数据库中随机选择两个值【英文标题】:SwiftUI - Randomly select two values from a database 【发布时间】: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。 【参考方案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 
        
    

【讨论】:

以上是关于SwiftUI - 从数据库中随机选择两个值的主要内容,如果未能解决你的问题,请参考以下文章

在 SwiftUI Picker 中为 NSManagedObject 设置默认值?

从数组中显示带有名称的随机图像。 (SwiftUI)

从列表中随机选择

使用 scipy 从 pdf 中选择随机值

SwiftUI:如何从核心数据中的 TextField 中保存值

如何在 SwiftUI 中延迟 @State 变量的设置值