Tôi đang cố gắng tạo một trình bao bọc thuộc tính tùy chỉnh được SwiftUI hỗ trợ, có nghĩa là những thay đổi đối với các giá trị thuộc tính tương ứng sẽ gây ra cập nhật cho chế độ xem SwiftUI. Đây là phiên bản đơn giản hóa của những gì tôi có:
@propertyWrapper
public struct Foo: DynamicProperty {
@ObservedObject var observed: SomeObservedObject
public var wrappedValue: [SomeValue] {
return observed.value
}
}
Tôi thấy rằng ngay cả khi tôi ObservedObject
được chứa trong trình bao bọc thuộc tính tùy chỉnh của mình, SwiftUI vẫn nắm bắt được các thay đổi SomeObservedObject
miễn là:
- Bao bọc tài sản của tôi là một cấu trúc
- Bao bọc tài sản của tôi phù hợp với
DynamicProperty
Thật không may, các tài liệu rất thưa thớt và tôi có một thời gian khó khăn để nói nếu điều này chỉ làm việc không may mắn với việc triển khai SwiftUI hiện tại.
Các tài liệu của DynamicProperty
(trong Xcode, không trực tuyến) dường như chỉ ra rằng một thuộc tính đó là một thuộc tính được thay đổi từ bên ngoài khiến chế độ xem được vẽ lại, nhưng không có gì đảm bảo về những gì xảy ra khi bạn tuân thủ các loại của riêng mình với giao thức này.
Tôi có thể mong đợi điều này sẽ tiếp tục hoạt động trong các bản phát hành SwiftUI trong tương lai không?