【问题标题】:Alamofire Serialization is Too SlowAlamofire 序列化太慢了
【发布时间】: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


    【解决方案1】:

    事实证明,我正在减慢序列化过程,因为在此过程中我试图从 URL 中获取 UIImage。我希望这可以帮助像我这样犯愚蠢错误的人哈哈。

    【讨论】:

      【解决方案2】:
      I would already be about the connection and server problem if network speed is 
      slow. Try using a different endpoint from a different server to test the 
      speed.If its faster then the problem is on your server. Since your 
      implementation is correct then definitely it is server problem. alamofire has 
      nothing to do on handling the issue if the problem is on the server or 
      connection.
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-11-19
        • 2013-03-10
        • 2014-06-07
        • 2016-05-31
        • 2011-07-07
        • 2015-08-23
        • 2012-07-05
        相关资源
        最近更新 更多