在 Swift 中将单例类重新分配给子类

Re-assigning a singleton class to a subclass in Swift

提问人:Ben Long 提问时间:11/14/2023 更新时间:11/14/2023 访问量:57

问:

在 Swift 中,我有一个 Skin 类,它被定义为 ObservableObject 单例,其中包含:

class Skin: ObservableObject {
   @ObservedObject var theCurrentWorld = WorldViewController.shared

   static var shared = Skin()
   
   @Published var skinName = "Default Skin”
…gobs of other properties

我使用从我的应用程序的所有位置访问它

@ObservedObject var currentSkin = Skin.shared

我还有皮肤的子类,这些子类覆盖了基本 Skin 类的一些属性和方法。当用户决定更改皮肤时,我希望能够将 currentSkin 重新分配为这些子类之一。

但是如果我说

currentSkin = LeopardSkin()

我得到:Cannot assign to property: 'self' is immutable

相反,如果我说:

currentSkin.shared = LeopardSkin()

我得到:

Static member 'shared' cannot be used on instance of type 'Skin'

那么,如果我只是说:

Skin.shared = LeopardSkin()

它编译了,但 currentSkin 仍然是原始的基础皮肤。我通过检查一些属性和跟踪一些方法知道这一点。

所以现在我没有想法了。任何帮助都会很棒!

Swift 单例

评论

2赞 lorem ipsum 11/14/2023
缺少很多东西,但可能存在观察问题,很明显您是 SwiftUI 的新手,因为您正在误读,它仅适用于您无法在带有 SwiftUI 包装器的类中观察它。您可以利用和使用ObservedObjectViewCombinesink
0赞 workingdog support Ukraine 11/14/2023
要了解如何在 SwiftUI 应用程序中管理数据,请查看此官方链接,它为您提供了一些有关如何在应用程序中管理数据的好示例: 监控数据 .还可以检出,ObservableObject 您可以从第一个链接中看到,并且没有一起使用。ObservableObjectsingleton pattern

答: 暂无答案