首页 > 解决方案 > 如何用 ObservedObject 和 NSManagedObject 制作 Picker?

问题描述

在我看来,我定义了一些 ObservedObjects。ShoppingItems 和 Packages 是 NSManagedObject 的子类。

    @ObservedObject var shoppingListData: ShoppingListData
    @ObservedObject var shoppingItem: ShoppingItems
    @ObservedObject var package: Packages

    init(thisData: ShoppingListData, formShoppingItem: ShoppingItems, formPackage: Packages?) {
        shoppingListData = thisData
        shoppingItem = formShoppingItem

        if let fp = formPackage {
            package = fp
        } else if let fp = formShoppingItem.minStorePackage {
            package = fp
        } else {
            let newPackage = Packages(context: thisData.dataStack.moc)
            newPackage.myShoppingItem = formShoppingItem
            newPackage.myStore = thisData.dataStack.currentReceipt.myStore!
            package = newPackage
        }
    }

在我的身体里,我有一个选择器。

 Picker(selection: $package, label: Text("Store Packages")) {
     ForEach(shoppingItem.storePackages, id: \.uuidKey) { pkg in
         Text(pkg.brandName).tag(pkg.uuidKey)         
     }
 }

选择器将显示其他包,但它不会将包变量从旧包更改为新选择的包。在视图初始化后更改 @ObservedObject 指向的实例是否有一些 SwiftUI 限制?

标签: core-dataswiftui

解决方案


推荐阅读