Меня немного сбивает с толку использование следующего кода снова и снова, чтобы преобразовать мои данные в JSON, и я надеялся, что есть собственная многоразовая функция для достижения того же самого, когда я могу передать что угодно, она проверит, если это Encodable и либо выводит nil, либо String:
let encoder = JSONEncoder()
let formatter = DateFormatter()
formatter.dateStyle = .medium
encoder.dateEncodingStrategy = .formatted(formatter)
guard let jsonDateData = try? encoder.encode(dateOfApproval) else {return}
guard let myDateString = String(data: jsonDateData, encoding: .utf8) else {return}
Суть проблемы, похоже, заключается в том, что я не могу проверить, является ли отправляемый объект Any как Encodable, оставляя меня проверять укажите тип c (как показано ниже):
func shapeData(dataToShape: Any)-> String? {
let encoder = JSONEncoder()
let formatter = DateFormatter()
formatter.dateStyle = .medium
encoder.dateEncodingStrategy = .formatted(formatter)
if let hi = dataToShape as? String { // I'd prfer to be able to check if it's encodable here instead of a specific type
guard let jsonDateData = try? encoder.encode(hi) else {return nil}
guard let myDateString = String(data: jsonDateData, encoding: .utf8) else {return nil}
return myDateString
} else {
return nil
}
}
Я пробовал if dataToShape is Encodable
, но это тоже не сработало.