#swift #string #nsdate
Вопрос:
Что случилось? Тот же код работает и для других классов. Когда я преобразую строку в nsdate, симулятор вылетает.
let dateFormatter = DateFormatter()
dateFormatter.dateFormat = "EEE, dd/MM/yyyy (HH:mm)"
//ordino il file
var dataminima = dateFormatter.date(from: "lun, 01/01/2010 (01:01)")
var datamassima = dateFormatter.date(from: "lun, 01/01/2010 (01:01)")
var indice = 0
var indiceminimo = 1
var indice1 = 0
for data in arraycomplessivo {
let validData = data as! NSDictionary
let dataestratta = validData["data"]
print(dataestratta as! String)
//converto da stringa a NSDate - that's the error
let dataconvertita = dateFormatter.date(from:dataestratta as! String)!
//print(dataminima!)
print(dataconvertita)
// данные: gio, 10/06/2021 (12:00)
Комментарии:
1. Зачем использовать
NSDictionary
, а неDictionary
? То же самое относится и кNSMutableArray
.2. Каков результат
print(dataestratta as! String)
? Вы используете слишком много восклицательных знаков, это приглашение «пожалуйста, разбейте меня». И не используйтеNSDictionary/NSArray
в Swift.3. Прости, я пропустил это. Я просто редактирую пост. данные: gio, 10/06/2021 (12:00) Это правильно с форматом даты «EEE, дд/ММ/гггг (ЧЧ:мм)»
Ответ №1:
Языковой стандарт в симуляторе не обязательно совпадает с вашим устройством или компьютером Mac.
Поскольку формат даты строки, очевидно, итальянский, добавьте фиксированный язык
dateFormatter.locale = Locale(identifier: "it_IT")
dateFormatter.dateFormat = "EEE, dd/MM/yyyy (HH:mm)"