Skip to content

Commit e1e08d7

Browse files
committed
Add force @PublishedObject wrapper support for optionals and arrays
1 parent b2e6d88 commit e1e08d7

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

Sources/PublishedObject/PublishedObject.swift

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,22 @@ public struct PublishedObject<Value> {
121121
#if FORCE_PUBLISHED_OBJECT_WRAPPER
122122
/// Force PublishedObject when using ObservableObjects
123123
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
124-
extension Published where Value: ObservableObject {
125-
public init(wrappedValue: Value) {
126-
fatalError("Use PublishedObject with ObservableObjects")
124+
extension Published {
125+
public init(wrappedValue: Value) where Value: ObservableObject {
126+
fatalError("Use @PublishedObject with ObservableObjects")
127+
}
128+
public init(wrappedValue: Value) where Value: _PublishedObjectInternalObservableObjectOptional {
129+
fatalError("Use @PublishedObject with optional ObservableObjects")
130+
}
131+
public init(wrappedValue: Value) where Value: _PublishedObjectInternalObservableObjectArray {
132+
fatalError("Use @PublishedObject with arrays of ObservableObjects")
127133
}
128134
}
135+
136+
public protocol _PublishedObjectInternalObservableObjectOptional {}
137+
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
138+
extension Optional: _PublishedObjectInternalObservableObjectOptional where Wrapped: ObservableObject {}
139+
public protocol _PublishedObjectInternalObservableObjectArray {}
140+
@available(iOS 13.0, OSX 10.15, tvOS 13.0, watchOS 6.0, *)
141+
extension Array: _PublishedObjectInternalObservableObjectArray where Element: ObservableObject {}
129142
#endif

0 commit comments

Comments
 (0)