Я хочу преобразовать NSString в Character в Swift.Как преобразовать NSString в символ в Swift?
Я получаю строку из NSTextField, где я вводил один символ (пример «@»), мне нужно это в типе символов.
Я хочу преобразовать NSString в Character в Swift.Как преобразовать NSString в символ в Swift?
Я получаю строку из NSTextField, где я вводил один символ (пример «@»), мне нужно это в типе символов.
Класс использования символов
var chars = [Character](str)
stringValue
из NSTextField
фактически возвращает Swift строку, а не NSString
:
let str = myTextField.stringValue // str is a String
Вы получаете первый элемент с
let ch = str[str.startIndex] // ch is a Character
NSString
бы должны быть преобразованы в Swi фт строка первая:
let nsString : NSString = "@"
let str = String(nsString)
let ch = str[str.startIndex]
это должно быть так просто, как let characterFromString = Character(textField.text)
.
NSString
автоматически мостик Свифта String
и Character
класса имеет инициализации, который принимает один символ String
; см. документацию here.
Это требует, чтобы входная строка содержала один кластер графем (т. Е. Один символ), и поэтому вы можете проверить свой ввод до кастинга. Чуть более подробная версия выше будет:
let text = textField.text as String
if countElements(text) == 1 {
let character = Character(text)
// do what you want
} else {
// bad input :-(
}
Да, это лучше для одного символа, +1. –
, почему это не работает 'ул [0]' – codester
@codester: Поскольку индекс строка имеет тип 'String.Index' и не' Int' , Основной причиной является (вероятно) обработка сложных составных символов Юникода. –
Из 'textfield' вы получаете' String', поэтому нет необходимости явно преобразовывать 'String' – codester