【发布时间】:2020-12-09 18:11:54
【问题描述】:
我有一个可选择和双击的名称列表。 我有一个 CoreData 记录列表,我无法选择或双击。
如何使 CoreData 列表可选择和双击?
这是我正在使用的可选列表代码:
import SwiftUI
struct ContentView: View {
private static let values = ["Luke","Han","Chewie","Liea","R2D2"]
@State private var selection: String? = nil
var body: some View {
VStack {
HStack {
List(Self.values, id: \.self, selection: $selection) { name in
Text(name)
.gesture(TapGesture(count: 2).onEnded {
print("double clicked")
selection = name
})
.simultaneousGesture(TapGesture().onEnded {
print("single clicked")
selection = name
})
}
}
}
}
}
这是我的 ManagedObject:
@objc(Enquiry)
public class Enquiry: NSManagedObject {
}
这是显示列表的 CoreData 列表:
import SwiftUI
import CoreData
struct EnquiryList: View
{
@Environment(\.managedObjectContext) private var viewContext
var enquiries: FetchRequest<Enquiry>
init (uuid: UUID)
{
enquiries = FetchRequest<Enquiry>(entity: Enquiry.entity(), sortDescriptors: [], predicate: NSPredicate(format: "UUID == %@", uuid as CVarArg))
}
@State private var selection: Enquiry? = nil
var body: some View
{
VStack
{
ForEach(enquiries, id: \.self, selection: $selection)
{enquiry in
EnquiryListRow(enquiry: enquiry)
.gesture(TapGesture(count: 2).onEnded {
print("double clicked")
selection = enquiry
})
}
}
}
}
ForEach 行给出以下错误:
我错过了什么?最终我想选择记录,然后双击打开一个带有查询的窗口。
根据 Asperi 的回答更改代码并没有让我更进一步:
List(enquiries.wrappedValue, id: \.self, selection: $selection)
{enquiry in
Text("Hello")
}
enquiries.wrappedValue.count 显示有 3 条记录,但没有任何显示。将其移回 ForEach 将显示 Hello 三次。
【问题讨论】:
-
第二个例子不起作用?第一个对我来说很好
-
是的,这是我的问题。如何使第二个示例像第一个示例一样工作。