Swift Academy · Oppitunti

Projisoidut arvot ja $binding

projectedValue-arvon tarjoaminen lisätoiminnallisuuksien välittämiseksi $-etuliitteellä.

Oppitunti 2/412 vaihetta

Projisoidut arvot ja $binding on ilmainen Swift Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Swift Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Tervetuloa

Projektoidut arvot (joihin pääsee käsiksi `$`-syntaksilla) tarjoavat property wrapperille toissijaisen rajapinnan. SwiftUI:n `@State` ja `@Published` käyttävät niitä `Binding`- ja `Publisher`-arvojen tarjoamiseen.

`projectedValue`-arvon lisääminen

```swift @propertyWrapper struct Toggle { var wrappedValue: Bool = false var projectedValue: String { wrappedValue ? "ON" : "OFF" } } struct Model { @Toggle var active } var m = Model() print(m.$active) // "OFF" — projected value accessed with $ ```

`projectedValue`-arvon tyyppi

Projektoitu arvo voi olla mikä tahansa tyyppi: `Binding`, `Publisher`, `String` tai mukautettu tyyppi. SwiftUI:n `@State` projisoi `Binding`-arvon, joka mahdollistaa kaksisuuntaisen tietovirran.

Esimerkki Binding-projektiosta

```swift // @State projects Binding: @State var isOn = false Toggle(isOn: $isOn) // $isOn is Binding ```

Mukautettu Binding-projektio

```swift @propertyWrapper struct Validated { var wrappedValue: String var projectedValue: Bool { !wrappedValue.isEmpty } } struct Form { @Validated var email = "" } var f = Form() f.email = "hi@example.com" print(f.$email) // true — projected Bool ```

`@Published`-projektio

```swift class VM: ObservableObject { @Published var score = 0 } let vm = VM() let cancellable = vm.$score // Publisher .sink { print("Score: \($0)") } vm.score = 10 // "Score: 10" ```

`projectedValue`-arvon käyttäminen wrapperin sisällä

```swift @propertyWrapper struct History { private var current: T private(set) var projectedValue: [T] = [] var wrappedValue: T { get { current } set { projectedValue.append(current); current = newValue } } init(wrappedValue: T) { current = wrappedValue } } ```

History-wrapperin käyttäminen

```swift struct Counter { @History var count = 0 } var c = Counter() c.count = 1; c.count = 5; c.count = 3 print(c.$count) // [0,1,5] — history of old values ```

`$`-syntaksin selvennys

```swift struct Form { @State var text = "" var body: some View { TextField("Enter", text: $text) // $text is Binding } } // text → String (wrappedValue) // $text → Binding (projectedValue) ```

Suunnittelussa huomioitavaa

• `projectedValue` on valinnainen — lisätkää se vain, kun tarvitaan toissijainen rajapinta • Sen tyyppi voi poiketa täysin `wrappedValue`-ominaisuuden tyypistä • Käyttäkää `$`-syntaksia kutsukohdassa projektoituun arvoon pääsemiseksi • Projektoidut arvot sopivat erinomaisesti Combine-publishereille ja SwiftUI:n binding-arvoille

Pikatarkistus

Miten property wrapperin `projectedValue`-arvoon pääsee käsiksi?

Kertaus

Tärkeimmät asiat: • `projectedValue` tarjoaa wrappereille toissijaisen API:n `$`-syntaksin kautta • Se voi olla mikä tahansa tyyppi: Binding, Publisher, Bool tai Array • `@State` projisoi `Binding`-arvon ja `@Published` projisoi `Publisher`-arvon • Käyttäkää `$propertyName`-syntaksia sekä rungossa että kutsukohdassa • Lisätkää toinen rajapinta vain, jos se tuottaa todellista lisäarvoa Seuraavaksi: @Published ja Combine.
Aloita maksutta

Opi Swift tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
122
Oppitunnit
409

Usein kysytyt kysymykset

Onko oppitunti ”Projisoidut arvot ja $binding” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Swift Academy-oppimispolun 3 oppituntia, myös oppitunnin “Projisoidut arvot ja $binding”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Swift Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Projisoidut arvot ja $binding”?

projectedValue-arvon tarjoaminen lisätoiminnallisuuksien välittämiseksi $-etuliitteellä. Harjoittelet Swift Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Swift Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Swift Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Projisoidut arvot ja $binding”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Swift Academy-oppitunnilla?

Kyllä. Jokainen Swift Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Mukautetun ominaisuuskääreen luominen
  2. Projisoidut arvot ja $binding
  3. @Published ja havainnointi Combinella
  4. Useiden ominaisuuskääreiden yhdistäminen
← Takaisin: Swift Academy