PublishedObject 0.1.5

PublishedObject 0.1.5

Amzd维护。



  • Casper "Amzd" Zandbergen

PublishedObject

一个属性封装器,将封装的ObservableObject的objectWillChange Forewards到外层ObservableObject的objectWillChange。

就像@Published一样,它向封装的ObservableObject的ObjectWillChangePublisher发送willSet事件,但与@Published不同的是,它还将封装值的发布更改发送到封装的ObservableObject。

class Outer: ObservableObject {
    @PublishedObject var innerPublishedObject: Inner
    @Published var innerPublished: Inner

    init(_ value: Int) {
        self.innerPublishedObject = Inner(value)
        self.innerPublished = Inner(value)
    }
}

class Inner: ObservableObject {
    @Published var value: Int

    init(_ int: Int) {
        self.value = int
    }
}

func example() {
    let outer = Outer(1)
    
    // Setting property on Outer (This will send an update with either @Published or @PublishedObject)
    outer.innerPublishedObject = Inner(2) // outer.objectWillChange will be called 
    outer.innerPublished = Inner(2)       // outer.objectWillChange will be called

    // Setting property on Inner (This will only send an update when using @PublishedObject)
    outer.innerPublishedObject.value = 3  // outer.objectWillChange will be called !!!
    outer.innerPublished.value = 3        // outer.objectWillChange will NOT be called 
}

它只有一个文件,所以您可以简单地复制。还支持Swift Package Manager。