【发布时间】:2018-02-13 21:27:43
【问题描述】:
由于某种原因,我需要很长时间进行序列化。我正在使用 Alamofire 和 ObjectMapper 来处理请求响应并将数据反序列化为对象。
这是我发送的请求:
Alamofire.request(Constants.apiRequests.paloozas, method: .get, parameters: params, headers: HeaderManager.sharedInstance.authHeader!).validate().responseObject { (response: DataResponse<PaginatedPaloozas>)
// handle response
}
这是 PaginatedPaloozas 对象:
struct PaginatedPaloozas: Mappable {
var meta: PageMetaData?
var paloozas: [Palooza]?
init?(map: Map) { }
mutating func mapping(map: Map) {
self.meta <- map[Constants.PaginatedPaloozas.meta]
self.paloozas <- map[Constants.PaginatedPaloozas.paloozas]
}
}
这是我的 Palooza 对象:
struct Palooza: Mappable {
var id: Int!
var startingLocation: Place!
var endingLocation: Place!
var startTime: Date!
var endTime: Date?
var note: String?
var perPersonPrice: String!
var seats: Int!
var chat: String?
var completedAt: Date?
var numSeatsAvailable: Int!
var distance: Float?
var bookingFee: String!
var totalPrice: String!
var status: PaloozaStatus!
var code: String?
var involvement: Involvement!
var bookings: [Booking]?
var owner: Owner?
enum PaloozaStatus: String {
case pending = "pending"
case inProgress = "in_progress"
case cancelled = "cancelled"
case completed = "completed"
}
enum Involvement: String {
case owner = "owner"
case presenter = "presenter"
case none = "none"
}
init?(map: Map) { }
mutating func mapping(map: Map) {
self.id <- map[Constants.Palooza.id]
self.startingLocation <- map[Constants.Palooza.startingLocation]
self.endingLocation <- map[Constants.Palooza.endingLocation]
self.startTime <- (map[Constants.Palooza.startTime], CustomDateTransform())
self.endTime <- (map[Constants.Palooza.returnTime], CustomDateTransform())
self.note <- map[Constants.Palooza.note]
self.perPersonPrice <- map[Constants.Palooza.perPersonPrice]
self.seats <- map[Constants.Palooza.seats]
self.chat <- map[Constants.Palooza.chat]
self.completedAt <- (map[Constants.Palooza.completedAt], CustomDateTransform())
self.numSeatsAvailable <- map[Constants.Palooza.numSeatsAvailable]
self.distance <- map[Constants.Palooza.distance]
self.bookingFee <- map[Constants.Palooza.bookingFee]
self.totalPrice <- map[Constants.Palooza.totalPrice]
self.status <- (map[Constants.Palooza.status], EnumTransform<PaloozaStatus>())
self.code <- map[Constants.Palooza.code]
self.involvement <- (map[Constants.Palooza.involvement], EnumTransform<Involvement>())
self.bookings <- map[Constants.Palooza.bookings]
self.owner <- map[Constants.Palooza.owner]
}
}
我只有 5 个 paloozas,序列化需要 10 秒。我尝试在 Alamofire 请求中使用不同的队列,但没有任何区别。请帮我加快这个过程。
【问题讨论】:
标签: ios swift serialization alamofire objectmapper