Typecast для String из Any получил сбой - PullRequest
0 голосов
/ 01 октября 2018

У меня есть код для сортировки массива объекта MyDate, который с тех пор является Any, а значение устанавливается из ObjectMapper, значение с тех пор, как получить из json следующим образом:

... 
"since": "1536642141",
... 

Этот код работает хорошов Xcode 9.4.1, но получил сбой в Xcode 10.

tempDates = tempDates.sorted(by: { Int(String.init(describing: $0.since))! < Int(String.init(describing: $1.since))!  })

Сообщение об ошибке: «Неустранимая ошибка: неожиданно обнаружен ноль при развертывании необязательного значения» Это ошибка Xcode?Как я мог это исправить?

1 Ответ

0 голосов
/ 01 октября 2018

Может быть три причины, по которым Int возвращает nil при инициализации случайной строкой.

  1. Когда строка имеет цифры больше 32-битной / 64-битной длины
    let a = Int(String.init(describing: "153664214187878888878878"))

  2. Когда строка не содержит цифр
    let a = Int(String.init(describing: "heyyowhynodigits"))

  3. Когда строка содержит другие символы с цифрами
    let a = Int(String.init(describing: "heyyowhynodigits"))

Эти причины должны быть действительны как для XCode 9.4.1, так и для XCode 10.
Возможно, однако, что в XCode 9.4.1 строка длиной 64 битабыл протестирован на устройстве / эмуляторе 64-битной длины.
Но, в случае XCode 10, тестирование проводится на 32-битном устройстве / симуляторе, что делает допустимым случай 1 (выше).

...