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 设置默认值?