[iOS] Property Wrapper ความสามารถในการเขียน Annotation บน Swift
![Image](https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0Gdh0tku3jmyENopqvLVNLcr6RsY09dmNHwLq70MGe7jfj6Dk74CZlr3yatWVYym2-q92rlSt_Iav8ewBKL6FOUoNBofm89MgNvYbsuhgH9lh2KhTlfnO-aBhWGi7wmwfmV21R-_GdUcVoGgwjLQQdWZYpIs9mJn0w_vqY5WloN_ikzLJ_i3efwUw/w400-h225/wwdc22-mac-wallpaper-original.png)
Property Wrapper ถ้าแปลตามชื่อก็คือการปั้นตัวแปร เพื่อให้มีค่าเริ่มต้นตามที่กำหนด หรือความสามารถพิเศษตามที่เราต้องการ โดยอาศัยการระบุ annotation นำหน้าไปเท่านั้น !!! ลองมาดูวิธีใช้งานกันครับ ก่อนอื่น ต้องสร้าง annotation ที่เราต้องการก่อน @propertyWrapper struct Capitalized { var wrappedValue: String { didSet { wrappedValue = wrappedValue.capitalized } } init(wrappedValue: String) { self.wrappedValue = wrappedValue.capitalized } } โดย @propertyWrapper เป็น attribute ที่บังคับต้องมี โดย datatype จะต้องตรงกับ attribute ที่เราเอาไปใช้งานด้วย ซึ่งตรงนี้เรามีการเพิ่มความสามารถ capitalized เข้าไปใน didSet ด้วย ตัวอย่างการใช้งาน struct User { @Capitalized var firstName: String @Capitalized var lastName: String } // firstName = Lord, lastName = Gift var user = User(firstName: "lord", lastName: "gift") หรือเราจะประกาศพร้อม assign value แบบนี้เลยก็ได้ // he