Archiv der Kategorie: Swift

Vapor 3

Vapor ist ein Swift-Framework zur Programmierung von Server-Anwendungen. Zwar ist es möglich, damit z.B. auch einen eigenen Webserver zu gestalten, in der Praxis werden mit Vapor aber überwiegend REST-APIs implementiert.
Derartige APIs können testweise unter macOS laufen; für den Praxisbetrieb kommt dann zumeist ein eigener Ubuntu-Server oder eine entsprechende Cloud-Instanz zum Einsatz.

Als ich im August 2017 für meinem Buch Swift 4 ein Kapitel über Vapor verfasste, dachte ich, in ein paar Wochen würde die aktualisierte Version Vapor 3 fertig werden, die dann (vollständig) Swift-4-kompatibel wäre. Da habe ich mich gleich in zweierlei Hinsicht getäuscht: Zum einen dauerte die Fertigstellung von Vapor 3 bis Mai 2018. Zum anderen war es kein kleines Update, sondern weitestgehend eine Neuimplementierung dieses Frameworks.

Vapor 3 weiterlesen

Swift 4.1

Swift 4.1 ist ein Minor Release, in dem sich Apple bemüht hat, einige Neuerungen unterzubringen ohne die Kompatibilität zu Swift 4.0 zu gefährden. Vorhandener Code sollte also unverändert laufen. Mit dem Update kommen Sie aber in den Genuss einiger neuer Features.

Swift 4.1 weiterlesen

Swift 4

Die Entwicklung von Swift 4 ist abgeschlossen. Für registrierte Apple-Developer ist Xcode 9 final bereits verfügbar, im App Store wird die Entwicklungsumgebung in den nächsten Tagen auftauchen. Dieser Beitrag fasst die wichtigsten Neuerungen in Swift zusammen. (Erste Version 5.7.2017, finales Update 18.9.2017. Der Artikel berücksichtigt auch die in Swift 3.1 hinzugefügte Neuerungen und geht kurz auf die Pläne für Swift 5 ein.)

Swift 4 weiterlesen

Swift 3.1

Mit Xcode 8.3/Swift 3.1 hat Apple ein Mini-Release herausgebracht. Swift 3.1 ist zu 99,99% kompatibel zu Swift 3.0, hat aber ein paar kleine neue Features dazubekommen. Richtig Bewegung in die Swift-Entwicklung wird erst im Herbst kommen, wenn Swift 4.0 fertig wird. (Daran wird hinter den Kulissen schon eifrig gearbeitet, aber in Swift 3.1 ist das noch nicht zu sehen.)

Swift 3.1 weiterlesen

Swift 3.0.1 unter Ubuntu 16.04, zweiter Anlauf

Im Dezember 2015 habe ich Swift unter Linux erstmals ausprobiert, im März 2016 habe ich meine Experimente mit Beta-Versionen von Swift 3 und Ubuntu 16.04 wiederholt. Restlos begeistert war ich nicht. Heute habe ich einen neuen Versuch gestartet, wieder unter Ubuntu 16.04, und diesmal mit einem Swift 3.0.1 GM Candidate.

Swift 3.0.1 unter Ubuntu 16.04, zweiter Anlauf weiterlesen

Bug im SpriteKit-Mustercode von Apple (Xcode 8)

Wenn Sie in Xcode ein neues Projekt vom Typ iOS/Game/Spritekit oder tvOS/Game/SpriteKit erstellen, dann richtet Xcode wie üblich einige Musterdateien ein. Diese enthalten bereits ein ausführbares Programm, das ‚Hello World‘ anzeigt. Nicht ungewöhnlich, würde man meinen.

So sieht die App aus, die aus dem SpriteKit-Mustercode erstellt wird. Ein wenig trist, ohne Animation oder Interaktion ...
So sieht die App aus, die aus dem SpriteKit-Mustercode erstellt wird. Ein wenig trist, ohne Animation und Interaktion …

Bug im SpriteKit-Mustercode von Apple (Xcode 8) weiterlesen

Simulator-Debugging-Ausgaben in Xcode stoppen

Wenn Sie in Xcode eine App im Simulator ausführen, erscheinen im Debugging-Bereich von Xcode (genaugenommen in der Konsole, das ist der rechte Teil des Debugging-Teilfensters) schier unendlich viele Meldungen, die in aller Regel niemanden interessieren. Wenn Sie in Ihrem Code selbst den einen oder anderen print-Aufruf eingebaut haben, dann gehen Ihre eigenen Ausgaben in der Simulator-Nachrichtenflut vollständig unter.

Eine mögliche Lösung besteht darin, die App auf einem echten iPhone, iPad oder Apple-TV-Gerät auszuführen. Um auch im Simulator etwas mehr »Ruhe« herzustellen, müssen Sie das Run-Schema verändern. Dazu führen Sie Product/Scheme/Edit Scheme aus, wählen das Run-Schema aus, wechseln in das Dialogblatt Arguments und fügen dann im Bereich Environment
Variables
die Einstellung OS_ACTIVITY_MODE = disable hinzu.

Diese Einstellung schafft himmlische Ruhe im Debugging-Bereich.
Diese Einstellung schafft himmlische Ruhe im Debugging-Bereich.

Beachten Sie aber, dass diese Einstellung einen offensichtlichen Nachteil hat: Mitunter verbergen sich in der Flut der Debugging-Ausgaben auch wichtige Informationen, z.B. dass Sie vergessen haben, in Info.plist einen Schlüssel einzustellen, damit die App um Erlaubnis fragt, ob sie Ortsdaten benutzen darf (This app has attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSLocationWhenInUseUsageDescription key with a string value explaining to the user how the app uses this data). Solche Meldungen gehen mit der Einstellung OS_ACTIVITY_MODE = disable verloren.

Quelle: http://stackoverflow.com/questions/37800790

Swift Playgrounds auf dem iPad ausprobiert

Apple bietet im App Store die kostenlose App Swift Playgrounds für iPads an. Die App soll vor allem Jugendlichen dabei helfen, die Grundkonzepte von Swift spielerisch zu erlernen. Die Animationen sprechen vermutlich eher acht- bis zehnjährige Kinder an, aber lassen Sie sich davon nicht abhalten: Die App hat wesentlich mehr Substanz, als die grafische Gestaltung vermuten lässt, und ist durchaus auch für erwachsene Einsteiger in die Swift-Programmierung interessant. In zahlreichen, allmählich anspruchsvolleren Übungen lernen Sie durchaus systematisch Methoden, Schleifen, if-Abfragen etc. kennen.

Durch die Definition einer eigenen Funktion und den Aufruf diverser  Methoden soll die Spielfigur »Byte« zum Ziel gesteuert werden.
Durch die Definition einer eigenen Funktion und den Aufruf diverser Methoden soll die Spielfigur »Byte« zum Ziel gesteuert werden.

Swift Playgrounds auf dem iPad ausprobiert weiterlesen

Fehler in Swift-Funktionen weitergeben (rethrows)

Die Array-Methode map ist ebenso wie unzählige weitere Collection-Methoden aus der Swift-Standardbibliothek mit dem Schlüsselwort rethrows deklariert:

// Definition von map in der Swift-Standardbibliothek
public struct Array<Element> : RandomAccessCollection, 
                               MutableCollection 
{
  public func map<T>(_ transform: (Element) throws -> T) rethrows 
                   -> [T]
}

Dieser Beitrag erklärt, was es mit rethrows auf sich hat und wie Sie rethrows in eigenen Funktionen bzw. Methoden verwenden.

Fehler in Swift-Funktionen weitergeben (rethrows) weiterlesen