Kurze Antwort auf Ihre Fragen:
1) Ja, Sie eine Zeichenfolge in das richtige Format für eine UUID, ähnlich dem Beispiel bieten müssen: Sie sind
UUID(uuidString: "E621E1F8-C36C-495A-93FC-0C247A3E6E5F")
Der Code mit UUID(uuidString: "Hello World")
wird nil
zurückgegeben.
2) Es sieht so aus, als ob Sie wirklich die Zeichenfolge verschlüsseln und entschlüsseln möchten. Dazu gibt es viele Informationen und viele Möglichkeiten. Vielleicht möchten Sie mit der Certificate, Key, and Trust Services Programming Guide beginnen.
Update: für alle, hierher zu kommen, weil sie eine tatsächliche UUID generieren müssen -
Am Terminal-Befehlszeile uuidgen
eingeben.
Weitere Update: eine UUID programmatisch in Swift zu erzeugen (ab 3.1), dies zu tun:
import Foundation
let myUUID: String = UUID().uuidString
Erklärung für die Fehlermeldung:
Beachten Sie die Markierung Frage in der dokumentierte Anweisung:
init?(uuidString: String)
In Swift, jeder Typ gefolgt von einer ?
ist ein optionaler Typ, was bedeutet, dass das Ergebnis entweder einen Wert des angegebenen Typs (UUID
hier) oder nichts (nil
) enthält.
Durch Klicken auf den Link für die init?
Anweisung in der Dokumentation, werden Sie die Discussion section bemerken in der Tat zeigen, ist: für ungültige Strings
Gibt nil zurück.
Sie bekommen die Fehler, da Swift muss gesagt werden, was mit diesen möglichen nil
Ergebnissen zu tun.
Sie müssen entweder:
- Code spezifische Behandlung für die mögliche
nil
Ergebnis. (Swift stellt die if let
und guard
Anweisungen für diese, zum Beispiel.) OR
- "Kraft unwrap" der optionalen Typ. In diesem Fall sagen Sie Swift, dass Sie sicher sind, dass die Ergebnisse NICHT
nil
sind, indem Sie einen !
folgend dem möglichen nil
Element hinzufügen.
In Ihrem Fall „Kraft die optionalen auspackt“ würde wie folgt aussehen:
print(str.uuidString!)
Natürlich, auch wenn dies kompiliert, ohne die Fehlermeldung, wäre es zum Absturz bringen, wenn die ungültige Zeichenfolge ("Hallo Welt ") kam mit und produzierte eine nil
. (Swift mag nicht, wenn Sie über mögliche Werte liegen nil
Werte, lol!) Also, seien Sie vorsichtig zu zwingen, nur Werte auszupacken, die Sie sicher sind, werden nicht nil
sein!
Das Generieren einer UUID aus einer Zeichenfolge ist nicht sinnvoll. Das ist nicht was eine UUID ist. Sie müssen Ihr Ziel erklären. – rmaddy
Es klingt, als ob Sie über einen Zweiweg-Hash sprechen. – rmaddy