ฉันกำลังพยายามสร้าง wrapper คุณสมบัติที่กำหนดเองที่สนับสนุนโดย SwiftUI ซึ่งหมายความว่าการเปลี่ยนแปลงค่าคุณสมบัติที่สอดคล้องกันจะทำให้การอัปเดตเป็นมุมมอง SwiftUI นี่คือเวอร์ชั่นที่เรียบง่ายของสิ่งที่ฉันมี:
@propertyWrapper
public struct Foo: DynamicProperty {
@ObservedObject var observed: SomeObservedObject
public var wrappedValue: [SomeValue] {
return observed.value
}
}
ฉันเห็นว่าแม้ว่าฉันObservedObject
จะอยู่ภายในเสื้อคลุมคุณสมบัติที่กำหนดเองของฉัน SwiftUI ยังคงจับการเปลี่ยนแปลงSomeObservedObject
ตราบใดที่:
- เสื้อคลุมทรัพย์สินของฉันเป็น struct
- เครื่องห่อคุณสมบัติของฉันเป็นไปตาม
DynamicProperty
โชคไม่ดีที่เอกสารเหล่านั้นกระจัดกระจายและฉันมีเวลาบอกได้ยากว่ามันจะโชคดีแค่ไหนกับการใช้งาน SwiftUI ในปัจจุบัน
DynamicProperty
ดูเหมือนว่าเอกสารของ(ภายใน Xcode ไม่ใช่ออนไลน์) แสดงว่าคุณสมบัติดังกล่าวเป็นคุณสมบัติที่มีการเปลี่ยนแปลงจากภายนอกทำให้มุมมองการวาดใหม่ แต่ไม่มีการรับประกันเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อคุณปฏิบัติตามประเภทของคุณกับโปรโตคอลนี้
ฉันคาดหวังได้ไหมว่าสิ่งนี้จะทำงานต่อไปในอนาคตของ SwiftUI