#swift #vapor
#swift #vapor
Вопрос:
У меня возникли проблемы с отправкой даты в Vapor 3 из Swift 5, iOS. Вот ошибка, которую я получаю от Vapor:
POST /admin/test Expected date string to be ISO8601-formatted.
Вот как я создаю дату в iOS
let today = Date()
let f = ISO8601DateFormatter()
f.formatOptions.insert(.withFractionalSeconds)
let finalDate = f.string(from: today)
Вот моя модель транзакций в iOS
final class Transaction: Codable, ReflectedStringConvertible {
var id: Int?
var date: String
var amount: Int
var planeID: Int
var userID: UUID
var month: Int
var year: Int
init(date: String, amount: Int, planeID: Int, userID: UUID, month: Int, year: Int) {
self.date = date
self.amount = amount
self.planeID = planeID
self.userID = userID
self.month = month
self.year = year
}
}
Вот мой vapor API
func createHandler (_ req: Request, transaction: Transaction) throws -> Future<Transaction> {
return transaction.save(on: req)
}
Вот моя модель транзакции на стороне vapor
final class Transaction: Codable {
var id: Int?
var date: Date
var amount: Int
var planeID: Plane.ID
var userID: User.ID
var month: Int
var year: Int
//fixes Swift 5 bug
typealias Database = PostgreSQLDatabase
init(date: Date, amount: Int, planeID: Plane.ID, userID: User.ID, month: Int = 0, year: Int = 0) {
self.date = date
self.amount = amount
self.planeID = planeID
self.userID = userID
self.month = month
self.year = year
}
}
Есть идеи, что я делаю не так? Это потому, что я отправляю строку для даты вместо даты? Большое спасибо.
Комментарии:
1. попробуйте без доли секунды
2. Спасибо. Я думал, что пробовал это, но теперь это работает. Спасибо!
Ответ №1:
Ответ заключался в том, чтобы удалить fractionalSeconds
let today = Date()
let f = ISO8601DateFormatter()
let finalDate = f.string(from: today)