Toon posts:

[WWDC] Apple SwiftUI / Combine

Pagina: 1
Acties:

Acties:
  • +3Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
Apple heeft 3 juni een compleet nieuwe applicatie architectuur geïntroduceerd die vanaf de in september officieel verkrijgbare nieuwe OS versies op alle platforms zullen werken: macOS, iPadOS, iOS, tvOS en watchOS.

Deze gaat de oudere op UIResponder, UIViewController en Storyboards gebaseerde VC laag uit MVC vervangen. SwiftUI is een met declaratieve manier om UI's te beschrijven die zowel vanuit code als vanuit Interface Builder opgebouwd kan worden, waarbij alle wijzigingen direct zichtbaar zijn, blijkbaar zelfs als de applicatie draait (hot code reload).

In combinatie met Combine is het nu erg makkelijk geworden om UI's aan data te koppelen op een Reactive manier. Dit lijkt erg sterk op de manier waarop je applicaties bouwt in Flutter en React Native, maar dan met Swift.

Je kunt onder Mojave Xcode 11 installeren, maar dan zie je de UI niet live in beeld. Dat werkt alleen als je ook de laatste macOS beta installeert.

Documentatie:

Combine
SwiftUI

Videos:

Keynote, skip naar 2:06:36 voor SwiftUI
Platforms State of the Union

Ik heb de nieuwe Xcode beta inmiddels geïnstalleerd en ik heb wat dingetjes geprobeerd met de nieuwe API's en ik ben erg onder de indruk. Ik ga nu Platforms State of the Union checken die net online is gekomen.

Wat zijn jullie ervaringen zo ver? Ik ben benieuwd hoe makkelijk het blijft als je complexere databindings en layouts gaat doen, tot zo ver waren het UIStackViews die sowieso redelijk makkelijk zijn onder UIKit.

Verder nog interessante API's of updates die ik ben tegen gekomen:
https://developer.apple.com/documentation/backgroundtasks

[Voor 0% gewijzigd door RobIII op 04-06-2019 18:31. Reden: Timestamp toegevoegd]

iOS developer


Acties:
  • +1Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 09:24
Ik heb nog weinig ervaring met het ontwikkelen van apps op het Apple-platform, maar heb al wel wat rondgerommeld met XCode, m.n. met het ontwikkelen van macos-applicaties. Waar ik tegenaan liep is dat er op gebied van macos-development erg weinig informatie te vinden is. De overgrote meerderheid gaat toch over het ontwikkelen van apps op IOS. De weinige trainingen/tutorials die ik op gebied van macos heb gevonden werden gedaan door mensen met nog weinig ervaring, en iedere keer worden dezelfde problemen op verschillende manieren opgelost, bijvoorbeeld het navigeren naar andere pagina's.

Gisteravond heb ik de WWDC gevolgd en ben erg enthousiast over de nieuwe manier van het ontwikkelen van user interfaces. Waar ik op de huidige manier XCode vooral een trukendoos vind waarmee je op de achtergrond een grote xml-file in elkaar configureert, hoop ik met Swift UI op een meer eenvoudige manier user interfaces te kunnen bouwen. De declaratieve wijze van user interfaces schrijven ziet er op het eerste gezicht goed uit en ik hoop op die manier samen met de API documentatie beter mijn weg te kunnen vinden.

Ik heb mij vanmiddag geregistreerd als Apple Developer, momenteel ben ik op een externe SSD macos Catalina aan het installeren, en daarna rustig in de documentatie duiken en beginnen met de tutorials die op de Apple developer site te vinden zijn. Hopelijk kan ik binnenkort ook mijn bijdrage leveren aan dit topic en het zou leuk zijn als we elkaars ervaringen uitwisselen om van elkaar te leren. Momenteel is het namelijk vooral zelf uitzoeken, collega's zijn er helaas (nog) niet mee bezig, aangezien ik in een Java-tent werk.

Acties:
  • 0Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
macOS is echt heel slecht qua documentatie. Kon de meest simpele dingen niet vinden zoals een button click afvangen in interface builder.

Helemaal niet slecht als dat vervangen wordt. Wat ik alleen niet weet is of het nou de oude UIKit en SwiftUI worden of alleen SwiftUI voor macOS

iOS developer


Acties:
  • 0Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 09:24
BikkelZ schreef op dinsdag 4 juni 2019 @ 20:33:
macOS is echt heel slecht qua documentatie. Kon de meest simpele dingen niet vinden zoals een button click afvangen in interface builder.
Dan ligt het dus niet aan mij ;) Als je de api documentatie doorleest, dan mis ik eigenlijk voorbeelden hoe je het dan moet toepassen. Ik heb uiteindelijk wel een pagina gevonden met allerlei voorbeeldcode, maar de meeste voorbeelden zijn al dermate verouderd dat je er nog maar weinig aan hebt.

Ik weet ook wel dat beginnen met macos-development i.p.v. ios-development niet helemaal de juiste volgorde is qua opdoen van ervaring in het Apple-platform, maar ik heb een idee in mijn hoofd wat ik uit wil werken wat alleen geschikt is voor macs.

Nu SwiftUI uitgebracht is, hoop ik dat er geen grote kloof meer is tussen hoe je apps ontwikkelt voor ios en voor macos en het daardoor eenvoudiger wordt.
Helemaal niet slecht als dat vervangen wordt. Wat ik alleen niet weet is of het nou de oude UIKit en SwiftUI worden of alleen SwiftUI voor macOS
Wat bedoel je precies met je laatste zin?

Acties:
  • +1Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
De gedeelde Ui libs. Of het beide iOS UI libs zijn op macOS of alleen SwiftKit




Inderdaad alles lijkt gewoon te werken. Zie Platforms State of the Union vanaf 32:00 ongeveer. Dus we hebben nu ineens drie manieren om macOS UI's te bouwen :D

[Voor 52% gewijzigd door BikkelZ op 04-06-2019 22:10]

iOS developer


Acties:
  • +1Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
Ik heb zojuist een SwiftUI View draaiende gekregen in een bestaande applicatie. De documentatie bestaat nog niet maar het gaat als volgt:

let vc = UIHostingController<BenefitsSwiftUIView>(rootView: BenefitsSwiftUIView())

Waarbij de HostingController dus een ViewController bouwt met als rootView een SwiftUI View. Ik heb nog niet gevonden of je losse Views kunt wrappen, andersom kan het wel in een UIViewRepresentable (of een UIViewControllerRepresentable). Die BenefitsSwiftUIView is gewoon de standaard "Hello World" SwiftUI View, geen speciale code daar.

Het leuke is dat alles nu ineens structs zijn, wat er volgens mij op duidt dat het meer configuratie is om UI te bouwen dan dat het echt een instantie is van het object wat in je view tree hangt. Erg benieuwd wanneer er meer details boven tafel komen!

[Voor 6% gewijzigd door BikkelZ op 05-06-2019 13:02]

iOS developer


Acties:
  • +1Henk 'm!

  • kay0313
  • Registratie: April 2013
  • Laatst online: 13-03-2022
Als je graag meer wilt weten over het bouwen van MacOs apps dan zou ik aanraden om te overwegen dit boek te kopen: https://www.hackingwithswift.com/store/hacking-with-macos
Daarin wordt vrij goed en duidelijk uitgelegd hoe en wat.

Acties:
  • +1Henk 'm!

  • JJ93
  • Registratie: Maart 2013
  • Laatst online: 05-06 19:31

JJ93

Error 418

Ik wil misschien een iPad app porten naar macOS. Iemand hier al mee geëxperimenteerd? En misschien belangrijker, kan je een macOS app distributen met een (iOS) Apple Developer account of is daar een aparte licentie voor nodig? Die 99 euro per jaar ga ik namelijk niet terug verdienen denk ik, maar als ik 't onder mijn developer account kan publiceren dan wil ik er misschien wel wat uurtjes in steken om te porten/optimaliseren voor macOS.

Acties:
  • +1Henk 'm!

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 09:24
JJ93 schreef op donderdag 6 juni 2019 @ 10:39:
Ik wil misschien een iPad app porten naar macOS. Iemand hier al mee geëxperimenteerd? En misschien belangrijker, kan je een macOS app distributen met een (iOS) Apple Developer account of is daar een aparte licentie voor nodig? Die 99 euro per jaar ga ik namelijk niet terug verdienen denk ik, maar als ik 't onder mijn developer account kan publiceren dan wil ik er misschien wel wat uurtjes in steken om te porten/optimaliseren voor macOS.
Voor zover ik weet kan je als je een Apple Developer account (die waar je 99 dollar per jaar voor betaalt) hebt voor alle platformen apps publiceren.

[Voor 3% gewijzigd door JeroenTheStig op 06-06-2019 15:26]


Acties:
  • +1Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 13:50
JeroenTheStig schreef op donderdag 6 juni 2019 @ 15:19:
[...]

Voor zover ik weet kan je als je een Apple Developer account (die waar je 99 dollar per jaar voor betaalt) hebt voor alle platformen apps publiceren.
Voorheen waren developer voor OS X en iOS separate licenties, en kosten het dus 2 keer 99 euro. Sinds een paar jaar is het inderdaad samengevoegd, beide voor 99.

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
Ik merk wel dat alle nieuwe compiler magic voor generics zoals `some` lastig te vinden hele generieke compiler errors geeft.

Je moet eigenlijk je UI opknippen in hele simpele stukken desnoods via fileprivate Views, net zoals je per UIView of contentView een losse klasse zou gebruiken bij de oude methode.

iOS developer


  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
Wat ik nog helemaal gemist had in alle gekte waren property wrappers, oftewel custom attributes. Je kunt gewoon ergens @propertyWrapper aan vast plakken en vervolgens kun je dat met @YourImplementation aanroepen overal in je code. Dat was echt een enorm gemis in Swift!

https://www.avanderlee.com/swift/property-wrappers/

iOS developer


Acties:
  • +1Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
Nog een goede tutorial over nieuwe attributes:
https://mecid.github.io/2...erty-wrappers-in-swiftui/

Dependency injection ingebouwd op language level, dat bevalt me wel. Hoeven we er in ieder geval geen discussies meer over te houden.

iOS developer


Acties:
  • 0Henk 'm!

  • Carbon
  • Registratie: Juni 2001
  • Laatst online: 13:10

Carbon

4800Wp + 5400Wp

BikkelZ schreef op dinsdag 4 juni 2019 @ 20:33:
macOS is echt heel slecht qua documentatie.
Documentatie en voorbeelden zijn gewoon online beschikbaar
Google maar eens op "cocoa button action"
Nadeel is wel dat de voorbeelden veelal geschreven zijn in Objective-C

Acties:
  • 0Henk 'm!

  • Carbon
  • Registratie: Juni 2001
  • Laatst online: 13:10

Carbon

4800Wp + 5400Wp

BikkelZ schreef op dinsdag 11 juni 2019 @ 14:45:
Wat ik nog helemaal gemist had in alle gekte waren property wrappers, oftewel custom attributes. Je kunt gewoon ergens @propertyWrapper aan vast plakken en vervolgens kun je dat met @YourImplementation aanroepen overal in je code. Dat was echt een enorm gemis in Swift!
Enorm gemis? Dat is een beetje overdreven :)

Je kunt dezelfde functionaliteit implementern via get/set
Wel minder elegant plus een veel boilerplate code

Acties:
  • 0Henk 'm!

  • BikkelZ
  • Registratie: Januari 2000
  • Laatst online: 03-12-2022
Tja als je er maar genoeg code tegenaan gooit kan ieder declaratieve oplossing ook gewoon in dikke lagen boilerplate opgelost worden.

Saai, grote kans op fouten en mag allemaal gecompliceerd worden. De berg code die je mag schrijven om Codable met één afwijkend veldnaampje werkend te krijgen is schrikbarend. Of je annoteert dat ene veld even en je bent klaar.

iOS developer

Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee