Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Property Wrappers
Search
yhkaplan
January 21, 2020
Programming
0
480
Property Wrappers
yhkaplan
January 21, 2020
Tweet
Share
More Decks by yhkaplan
See All by yhkaplan
Using the latest UICollectionView APIs
yhkaplan
0
2.1k
Swift and Concurrency: The Plan for World Domination
yhkaplan
0
140
Backend-Driven UI: Making Screens Dynamic
yhkaplan
1
1.5k
Migrating from UIKit to SwiftUI efficiently
yhkaplan
4
3.2k
Parser Combinators
yhkaplan
0
230
The Great Swift Migration
yhkaplan
1
3.9k
Speeding Up Your CI
yhkaplan
0
410
Automate All the Things
yhkaplan
4
2.2k
Other Decks in Programming
See All in Programming
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
880
Rubyのobject_id
qnighy
6
1.3k
サーバーレスで負荷試験!Step Functions + Lambdaを使ったk6の分散実行
shuntakahashi
6
1.6k
Method Swizzlingを行うライブラリにおけるマルチモジュール設計
yoshikma
0
120
Ruby Parser progress report 2024
yui_knk
2
230
オートマトン学習しろ / Do automata learning
makenowjust
3
130
長期運用プロダクトの開発速度を維持し続けるためのリファクタリング実践例
wataruss
8
2.7k
GraphQLの魅力を引き出すAndroidクライアント実装
morux2
3
770
Jakarta EE meets AI
ivargrimstad
1
530
Our Websites Need a Lifestyle Change, Not a Diet
ryantownsend
0
150
Pythonで改めて考える「クラス(class)」の使いどころ
os1ma
3
790
Swiftコードバトル必勝法
toshi0383
0
170
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
93
5.1k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.4k
4 Signs Your Business is Dying
shpigford
179
21k
The Invisible Customer
myddelton
119
13k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.3k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
24
610
Web Components: a chance to create the future
zenorocha
309
42k
Git: the NoSQL Database
bkeepers
PRO
425
64k
In The Pink: A Labor of Love
frogandcode
139
22k
Large-scale JavaScript Application Architecture
addyosmani
508
110k
Building a Scalable Design System with Sketch
lauravandoore
459
32k
Transcript
Property Wrappers 1
What are they? 2
→ New in 5.1 → Java-like annotations → Can accept
(generic) parameters → Used in SwiftUI 3
Purpose 4
Examples 5
SwiftUI 6
struct ContentView: View { @State private var value = 0.0
var body: some View { VStack { Text("Value is \(value)") Slider(value: $value) } } } 7
UIKit/ Foundation 8
class ViewController: UIViewController { @Keychain(key: "secret_info") var secretInfo = ""
} 9
Let's make one! 10
@propertyWrapper struct TwelveOrLess { private var number = 0 var
wrappedValue: Int { get { return number } set { number = min(newValue, 12) } } } // Use struct S { @TwelveOrLess var num = 13 // 12 } 11
@propertyWrapper struct Clamped { private var number = 0 private
let maxNum: Int private let minNum: Int var wrappedValue: Int { get { return number } set { number = max(min(newValue, maxNum), minNum) } } } // Use struct S { @Clamped(maxNum: 10, minNum: 0) var num = 13 // 10 } 12
Projected values 13
@propertyWrapper struct State<T> { //... var projectedValue: Binding<T> } 14
struct ContentView: View { @State private var isDisabled = false
var body: some View { OtherView($isDisabled) // Binding<Bool> } } 15
Conclusion 16
More info 17
→ The Swift Programming Language → Burritos 18