在SwiftUI Picker中为NSManagedObject设置默认值?
我正在使用SwiftUI中的在SwiftUI Picker中为NSManagedObject设置默认值?,swiftui,swiftui-form,Swiftui,Swiftui Form,我正在使用SwiftUI中的Picker从核心数据列表NSManagedObjects中进行选择,但无法让Picker显示默认值。选择一个值后,它也不会设置新值。有没有办法让选择器显示默认值 这里是设置NSManagedObject属性的地方 extension Company { @nonobjc public class func fetchRequest() -> NSFetchRequest<Company> { return NSFetchR
Picker
从核心数据列表NSManagedObject
s中进行选择,但无法让Picker显示默认值。选择一个值后,它也不会设置新值。有没有办法让选择器显示默认值
这里是设置NSManagedObject属性的地方
extension Company {
@nonobjc public class func fetchRequest() -> NSFetchRequest<Company> {
return NSFetchRequest<Company>(entityName: "Company")
}
@NSManaged public var id: UUID?
@NSManaged public var name: String?
@NSManaged public var companyContacts: NSSet?
@NSManaged public var companyRoles: NSSet?
//...
}
扩展公司{
@nonobjc公共类func fetchRequest()->NSFetchRequest{
返回NSFetchRequest(entityName:“公司”)
}
@NSManaged公共变量id:UUID?
@NSManaged公共变量名称:字符串?
@NSManaged public var companyContacts:NSSet?
@NSM管理的公共var公司:NSSet?
//...
}
这就是我尝试使用它的地方
struct AddRoleSheet: View {
@Environment(\.managedObjectContext) var moc
@FetchRequest(
entity: Company.entity(),
sortDescriptors: [
NSSortDescriptor(keyPath: \Company.name, ascending: true)
]
) var companies: FetchedResults<Company>
//...
@State var company: Company? = // Can I put something here? Would this solve my problem?
//...
var body: some View {
NavigationView {
Form {
Section {
Picker(selection: $company, label: Text("Company")) {
List {
ForEach(companies, id: \.self) { company in
company.name.map(Text.init)
}
}
}
//...
}
}
//...
}
}
struct AddRoleSheet:View{
@环境(\.managedObjectContext)变量moc
@获取请求(
实体:Company.entity(),
sortDescriptors:[
NSSortDescriptor(键路径:\Company.name,升序:true)
]
)var公司:获取结果
//...
@State var company:company?=//我能在这里放点什么吗?这能解决我的问题吗?
//...
var body:一些观点{
导航视图{
形式{
部分{
选择器(选择:$company,标签:Text(“company”)){
名单{
ForEach(companys,id:\.self){company in
company.name.map(Text.init)
}
}
}
//...
}
}
//...
}
}
在View.init阶段还没有获取结果,因此请尝试以下操作
@State var company: Company? = nil // << just initialize
//...
var body: some View {
NavigationView {
Form {
Section {
Picker(selection: $company, label: Text("Company")) {
List {
ForEach(companies, id: \.self) { company in
company.name.map(Text.init)
}
}
}
//...
}
}
}.onAppear {
// here companies already fetched from database
self.company = self.companies.first // << assign any needed
}
}
@State var company:company?=nil/在View.init阶段还没有获取结果,因此请尝试以下操作
@State var company: Company? = nil // << just initialize
//...
var body: some View {
NavigationView {
Form {
Section {
Picker(selection: $company, label: Text("Company")) {
List {
ForEach(companies, id: \.self) { company in
company.name.map(Text.init)
}
}
}
//...
}
}
}.onAppear {
// here companies already fetched from database
self.company = self.companies.first // << assign any needed
}
}
@状态变量公司:公司?=nil//