Я пытаюсь заставить текстовое поле принимать только буквенно-цифровой ввод, но как мне сделать это в функции уже без необходимости создания другой функции или протокола для этого?Я только 4 недели в изучении Swift, я не уверен, как использовать CharacterSet или Range, но мне нужно только взять AZ и 0-9, НО с этим вводом, я должен быть в состоянии перемещаться по нему в таком порядке, поэтомуесли я сдвину его на 2, и я нахожусь на z, это даст мне 1, или, если я нахожусь на a, и я смещусь на -1, то оно перейдет к 9. Я должен использовать протокол, который у меня уже есть, который имеет2 функции, шифруют и дешифруют и принимают 2 параметра, строку для ввода и другую строку для int, чтобы сдвинуть его, но для этого тоже требуется строка, я конвертирую ее в int для использования.Я просто заблудился о том, как ограничить ввод в функции и переходить по индексам с указанным int.
protocol CipherProtocol {
func encrypt (plaintext: String, secret: String) -> String
func decrypt (output: String, secret: String) -> String
}
struct AlphanumericCesarCipher: CipherProtocol {
func encrypt(plaintext: String, secret: String) ->
String {
guard let secret = UInt32(secret) else {
return "error"
}
var encoded = ""
for character in plaintext {
if let alpha = ["A","B","C","D","E","F","G","H","I","J","K","L","M",
"N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
"0","1","2","3","4","5","6","7","8","9"] {
}
guard let firstUnicodeScalar = character.alpha.first else {
return "error"
}
let unicode = firstUnicodeScalar.value
let shiftedUnicode = unicode + secret
let shiftedCharacter = String(UnicodeScalar(UInt8(shiftedUnicode))) //what does this line mean
encoded += shiftedCharacter
}
return encoded
}
func decrypt(output: String, secret: String) -> String {
return ""
}
}