2017-01-18 3 views
1

Ich baue einen zufälligen Passwort-Generator für iOS. Darin erzeugt ein Knopf ein zufälliges Passwort mit Eigenschaften, die vom Benutzer gewählt wurden (z. B. Schalter zum Ein- oder Ausschalten von Groß- und Kleinbuchstaben, Zeichen und Symbolen usw.).Random Passwort Generator Swift 3?

Die Benutzeroberfläche sieht gut aus, der Rest des Codes funktioniert reibungslos, aber ich kann nicht meine Schaltfläche tatsächlich eine zufällige alphanumerische Zeichenfolge generieren. Ich habe eine Beschriftung mit einem Platzhaltertext ("Your Password"), der seinen Text in eine zufällige Zeichenfolge aktualisiert, wenn die Schaltfläche gedrückt wird, aber ich erhalte einen Compiler-Fehler:

Hier ist der aktuelle Code für die Schaltfläche:

@IBAction func generatePassword(_ sender: UIButton) { 

    let randomPasswordArray: NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" 
    let len = UInt32(randomPasswordArray.length) 

    var randomPassword = "" 

    for _ in 0 ..< length { 
     let rand = arc4random(len) 
     var nextChar = randomPasswordArray.character(at: Int(rand)) 
     randomPassword += NSString(characters: &nextChar, length: 1) as String 
    } 

    passwordLabel.text = "randomPassword" 
} 

Vielen Dank!

+1

Wo hast du 'length' definiert? –

Antwort

7

Zuerst ein Array mit Ihrem Passwort Zeichen

erlaubt erstellen
let passwordCharacters = Array("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890".characters) 

dann die Länge Passwort wählen

let len = 8 

definieren und leere Zeichenfolge Passwort

var password = "" 

eine Schleife erstellen Sie Ihre zufällige Zeichen

for _ in 0..<len { 
    // generate a random index based on your array of characters count 
    let rand = arc4random_uniform(UInt32(passwordCharacters.count)) 
    // append the random character to your string 
    password.append(passwordCharacters[Int(rand)]) 
} 
print(password) // "V3VPk5LE" 

Swift 4

Sie können auch Karte anstelle eines Standard-Schleife verwenden, um gennerate:

let pswdChars = Array("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890") 
let rndPswd = String((0..<len).map{ _ in pswdChars[Int(arc4random_uniform(UInt32(pswdChars.count)))]}) 
print(rndPswd) // "oLS1w3bK\n" 
+0

Das hat es gelöst. Ich hatte vergessen, dass ich "len" statt "length" verwendet habe. Fixiere es jetzt, danke für deine Hilfe. –

+0

Sie sind willkommen –

+0

Ich denke, es wäre besser, Zahlen, Symbole, Großbuchstaben und Kleinbuchstaben in verschiedenen Zeichenfolgen zu haben, so dass es einfacher ist, die sekundären Anforderungen des Passworts zu erfüllen, wenn erforderlich. –