SwiftUI - Использование CoreData Fetched Result для заполнения Picker - PullRequest
1 голос
/ 20 сентября 2019

Я слежу за каждым руководством, которое я видел в Интернете, чтобы ввести управляемый объект в сцену SwiftUI с окружающей средой, а затем запустить @FetchRequest в сцене, все это прекрасно работает.

Я могуиспользуйте этот результат для заполнения значения средства выбора

Вот что у меня есть

CoreData Object

    public class CD_LookupData: NSManagedObject,Identifiable {}


extension CD_LookupData {

    @nonobjc public class func fetchRequest() -> NSFetchRequest<CD_LookupData> {
        return NSFetchRequest<CD_LookupData>(entityName: "CD_LookupData")
    }

    @NSManaged public var lookluptable: String?
    @NSManaged public var primarykeyid: String?
    @NSManaged public var value: String?

}

SwiftUI View

struct LabledSelectBoxCD: View {
    var label: String
    var lookupdata: FetchedResults<CD_LookupData>

    @Binding var value: Int

    var body: some View
    {
        VStack(alignment: .leading)
        {
            Picker(selection: $value, label: Text(""))
            {
                ForEach(lookupdata, id: \.primarykeyid)
                { data in
                    Text(data.value ?? "Unknown")
                }
            }
        }
    }
}

Заполняет егоСредство выбора со значениями просто отлично, но мое значение по умолчанию никогда не работает, и никакое выбранное значение не сохраняется.

Если я пробую то же представление только с массивом строк, оно будет работать отлично.

Есть идеи, как заставить его использовать значение primarykeyid для значения средства выбора?

Обновление:

@Binding var value: String

и

Text(data.value ?? "Unknown").tag(data.primarykeyid)

Не вносить никаких изменений

1 Ответ

1 голос
/ 20 сентября 2019

Вам нужно сделать ваше значение String, потому что это тип primaryKeyId

@Binding var value: String?

А затем вам нужен тег на каждом элементе средства выбора, чтобы установить выбор:

Text(data.value ?? "Unknown").tag(data.primaryKeyId
...