Lingolia Grammatik Apps für das iPad

Als „zweite App“ mit Swift haben wir jetzt fünf iPad-Apps zur deutschen, englischen, französischen und spanischen Grammatik sowie zur Esperanto Grammatik und Wortschatz im Apple App Store veröffentlicht.

Die Apps wurden mit Swift 4 und Xcode 9 entwickelt und besitzen eine gemeinsame Codebasis. Für jede App wurde ein extra Target erstellt, mit welchem auch die unterschiedlichen Daten und Codes getrennt wurden.
weiterlesen

Core Data, Batch-Updates und der Cache

Es kommt häufig vor, dass man eine große Anzahl von Datensätzen in einem Rutsch ändern muss. Dafür bietet Core Data den NSBatchUpdateRequest  an. Im nachfolgenden Beispiel wollen wir das Attribut visible  bei allen Datensätzen, bei denen es false  ist, auf true  setzen:

weiterlesen

Labeled Statements in Swift

Jeder Entwickler wird schon mal verschachtelte Schleifen (nested loops) genutzt haben. In manchen Fällen muss dabei eine Schleife bei einer bestimmten Bedingung unterbrochen werden. In Swift geschieht dies mit dem Schlüsselwort continue:

weiterlesen

Substrings in Swift

Eigentlich ist es ja eine einfache Übung, von einem String einen Substring zu ermitteln. Wer vorher jedoch nicht schon mit Objective-C entwickelt hat, wird bei Swift an dieser Stelle vielleicht kurz ins Stocken kommen und vergeblich eine Methode substring oder ähnliches suchen. Substring werden in Swift nämlich so gebildet:

Als Parameter wird hier eine Range mit einem startIndex und endIndex erwartet. Mit der Hilfsfunktion advance können wir eine Range erweitern oder auch verringern:

weiterlesen

Enumerations in Swift

Mit Enumarations werden bestimmte Werte in einem Type gruppiert. Diese Werte können dann verwendet werden, ohne das man sich über deren Type Gedanken machen muss.

Die so definierte Enumeration Position hat jetzt die Member Top, Right, Bottom und Left.

Hinweis: Im Gegensatz zu C und Objective-C haben die Member keinen standardmäßigen Integer-Wert. Top, Right, Bottom und Left sind also nicht explizit 0, 1, 2 und 3.

Die Werte lassen sich so zuweisen:

Wenn die Variable cursorPos  ihren Typ kennt, kann sie auch über eine kurze Schreibweise zugewiesen werden:

weiterlesen