Swift Loops & Animations

Aus Wikizone
Version vom 22. Januar 2023, 19:51 Uhr von 134.3.86.14 (Diskussion)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Links[Bearbeiten]

Swift (Programmiersprache)

Einführung - Loops über verschiedene Objekte[Bearbeiten]

Swift kann nicht nur über Arrays Loopen sondern auch über Strings

        let titleText = "⚡️FlashChat"
        for letter in titleText {
            print(letter)
        }

For in Loop[Bearbeiten]

let names = ["Stephan", "Yvonne", "Finn", "Damon"]
let fruits: Set = ["Apple", "Pear", "Orange", "Banana"]
let contacts = ["John":123, "Eva":456, "Adam":789]
let word = "Donaudampfschifffahrtsgesellschaftskapitän"
let halfOpenRange = 1..<5
let closedRange = 1...5

// for in loop

// loop through an array
for name in names { print("Hello, \(name)") }
// range
for number in 1...5{ print(number) }
// look no var
for _ in 1...5 { print ("hello") }
// Sets doesn't guarantee order. But they are fast
for fruit in fruits{ print("I like \(fruit)") }
// Collections have keys and values
for person in contacts{ print("\(person.key)'s number is \(person.value)") }
// Strings can be looped as characters
for char in word { print(char) }

Loop mit Effekt[Bearbeiten]

Mit einem Timer kann man sogar eine Animation in einem Textfeld erzeugen:

        titleLabel.text = ""
        let titleText = "⚡️FlashChat"
        var charIndex = 0.0
        for letter in titleText {
            Timer.scheduledTimer(withTimeInterval: 0.1 * charIndex, repeats: false){(myTimer) in
                self.titleLabel.text?.append(letter)
            }
            charIndex += 1
        }

While loop & do while loop[Bearbeiten]

while somethingIsTrue {
  // do something
}

or do while - which will do the loop at least one time

do {
  // do something
} while somethingIsTrue


<syntaxhighlight lang="swift">
// while loop - careful - do not create infitinte loops ;)

var now = Date().timeIntervalSince1970
let oneSecondFromNow = Date().timeIntervalSince1970 + 1
while now < oneSecondFromNow {
    now = Date().timeIntervalSince1970
    print("waiting...")
}

// fibonacci row
func fibonacci(n: Int) {
    if n < 2 { print("n has to be 2 at least"); return; }
    var last = 0
    var current = 1
    var fibonaccis: [Int] = [last,current]

    for _ in 2..<n {
        let next = last + current
        fibonaccis.append(last + current)
        last = current
        current = next
    }
    print (fibonaccis)
}
fibonacci(n: 10)