SwiftyJSON ArrayValue ограниченное количество объектов

Я столкнулся со странной проблемой, пытаясь получить JSON который имеет массив JSON внутри. API сервера хорош, так как приложение Android и веб-сайт получают правильные данные, но в iOS я получаю только 50 объектов или меньше в этом массиве. Если массив содержит менее 50 объектов - я получаю правильные данные. Может ли это быть как-то связано с SwityJSON ограничения, или что-то еще, что не позволяет мне получить весь JSON? Или это 100% проблема с сервером?

Вот мой код, но я уверен, что все должно быть в порядке.

class func requestSelection(id: String, handler: @escaping (Selection?) -> Void) {
    let url = "selections/" + id

    APIModel.shared.requestWithLocation(.post, URL: url, parameters: nil) { data in

        guard let `data` = data else {
            handler(nil)
            return
        }

        let selection = data["selection"].to(type: Selection.self) as? Selection
        //I print "list" and its count is less or equals 50
        selection?.restaurants = data["selection"]["list"].to(type: Restaurant.self) as? [Restaurant]
        handler(selection)
    }
}

func requestWithLocation(_ httpmethod: Alamofire.HTTPMethod, URL: String, parameters: [String: AnyObject]?, completionHandler: @escaping CompletionHandler) {

    let parametersWithLocation = self.addLocationTo(parameters: parameters)
    let url = self.serverAddress + "/" + URL

    self.alamofireRequest(url: url, method: httpmethod, parameters: parametersWithLocation) { data in
        completionHandler(data)
    }
}

private func addLocationTo(parameters: [String: AnyObject]?) -> [String: AnyObject] {
    var location: [String: Double] = [:]
    let locationManager = CLLocationManager()

    if (CLLocationManager.authorizationStatus() == .authorizedWhenInUse || CLLocationManager.authorizationStatus() == .authorizedAlways) && locationManager.location != nil {
        location = [
            "lon": locationManager.location!.coordinate.longitude,
            "lat": locationManager.location!.coordinate.latitude,
        ]
    }
    var parametersWithLocation = parameters ?? [:]
    parametersWithLocation["location"] = location as AnyObject

    return parametersWithLocation
}

private func alamofireRequest(url: String, method: HTTPMethod, parameters: [String: AnyObject]?, completionHandler: @escaping CompletionHandler) {
    Alamofire.request(url, method: method, parameters: parameters, encoding: JSONEncoding.default, headers: User.shared.header).validate().responseJSON { response in
        guard let data = response.result.value else {
            print(response.result.error as NSError? as Any, url)
            completionHandler(nil)
            return
        }
        //debugPrint(JSON(data), url)
        completionHandler(JSON(data))
    }
}

0 ответов

Другие вопросы по тегам