Преобразование символов в Int в Swift 2.0

Я просто хочу преобразовать символ в Int .

Это должно быть просто. Но я не нашел полезные ответы. Всегда есть ошибка. Возможно, это потому, что я пытаюсь это сделать в Swift 2.0.

for i in (unsolved.characters) { fileLines += String(i).toInt() print(i) } 

В Swift 2.0, toInt() и т. Д. Заменены инициализаторами. (В этом случае Int(someString) .)

Поскольку не все строки могут быть преобразованы в ints, этот инициализатор невозможен , что означает, что он возвращает необязательный int ( Int? ), А не только Int . Лучше всего это развернуть это необязательное использование, if let .

Я не уверен, что вы собираетесь делать, но этот код работает в Swift 2 и выполняет то, что, как я думаю, вы пытаетесь сделать:

 let unsolved = "123abc" var fileLines = [Int]() for i in unsolved.characters { let someString = String(i) if let someInt = Int(someString) { fileLines += [someInt] } print(i) } 

Или, для решения Swiftier:

 let unsolved = "123abc" let fileLines = unsolved.characters.filter({ Int(String($0)) != nil }).map({ Int(String($0))! }) // fileLines = [1, 2, 3] 

Вы можете сократить это с помощью flatMap :

 let fileLines = unsolved.characters.flatMap { Int(String($0)) } 

flatMap возвращает « Array содержащий не-nil результаты transform отображения над self » … поэтому, когда Int(String($0)) равен nil , результат отбрасывается.

Это немного импровизационный трюк, который я придумал. Так как это может быть сложно преобразовать Character в Int , но вы можете легко преобразовать String в Int :

 fileLines = Int(String(i))! 

конечно, это не очень хорошо оптимизировано, но для таких случаев, как ваша, это может сделать трюк.

На самом деле. Более простой способ – преобразовать String в Int в Swift 2.o:

 let chars = Int(chars) 

Не уверен, что это то, что вы пытаетесь … Но вы можете легко применить это к своей петле, конечно.

Решения Swift 4

Чтобы преобразовать Character в String :

 let digit = Int(String("1"))! //Don't force unwrap this if you're not 100% sure your character is a digit 

Решение проблемы OP:

 let fileLines = unsolved.compactMap{ Int(String($0) } // fileLines = [1, 2, 3] 
  • Удалить текст с кнопки «Назад», удерживая значок
  • Расширять типы массивов, используя предложение where в Swift
  • Синтаксис Swift do-try-catch
  • попробуйте, попробуйте! & пытаться? какая разница, и когда использовать их?
  • Быстрые расширения протоколов
  • Что означает подчеркивание в этом случае?
  • Общая функция, использующая имя типа в Swift
  • фатальная ошибка: замена места с самим собой не поддерживается с помощью Swift 2.0
  • Переопределение методов в расширениях Swift
  • Вернуть тип instancetype в Swift
  • Interesting Posts

    Как использовать cURL в Java?

    Как настроить ведение журнала Java с помощью файла свойств? (java.util.logging)

    Каков алгоритм вычисления Amazon-S3 Etag для файла размером более 5 ГБ?

    Определите, поддерживает ли SSD SATA 6 Гбит / с

    Эмулятор Windows Phone не запускается (не удалось настроить порт UDP)

    Запланированное задание Windows 10 выполняется как пользователь admin не запускает powershell

    Как получить реальный размер жизни объекта из изображения, когда вы не знаете расстояние между объектом и камерой?

    Запустите программу в пакетном скрипте и дождитесь ее завершения, прежде чем продолжить

    Как использовать функцию эллипсиса R при написании собственной функции?

    Объявлять переменные в верхней части функции или в отдельных областях?

    Инъекция зависимостей в Struts2 Доступ к фазам с включенным сеансом

    Удалить кавычки из символьного вектора в R

    Запрос API Google Places отклонен для автозаполнения Android, даже с помощью правильного ключа api

    доступ к переменной из другого classа

    Правильный способ совместного использования JQuery-Mobile / Phonegap?

    Давайте будем гением компьютера.