Ошибка 3840 «Текст JSON не начинался с массива или объекта, а также параметр, позволяющий не устанавливать фрагменты».через некоторое время на заявлении - PullRequest
0 голосов
/ 16 мая 2019

У меня ошибка 3840 "JSON-текст не начинается с массива или объект и параметр, чтобы разрешить фрагменты не установлены. "в моем приложении после некоторое время находиться на одной странице.

Я вызываю функцию облачного кода с моего сервера Parse, получаю ответ и отображаю его. Работает нормально, но после небольшого ожидания приложение вылетает.

Я звоню своему менеджеру для функции облачного кода:

ParseManager.sharedManager().fetchPrice(startDate: startDate, endDate: endDate, housingId: housing.objectId!) { (objects, error) in
    if (objects != []) {
        var price = 0

     for object in objects! {
         price += object["prix"] as! Int
     }
     price /= objects!.count
     self.priceByNight.text = "Price: \(price)"
    }
}

В моем менеджере:

func fetchPrice(startDate: Date, endDate: Date, housingId: String, completion: PFResults?) {
 let params = [
    "startDate": startDate,
    "endDate": endDate,
    "housing": housingId
 ] as [String : Any]

 PFCloud.callFunction(inBackground: "fetchPrice", withParameters: params) { (objects, error) in
    if let error = error {
        print(error)
        completion?(nil, error)
        return
    }

    if let objects = objects as? [PFObject] {
        completion?(objects, nil)
    }
 }
}

Это то, что моя функция отправляет мне обратно:

{
    "result": [{
        "price": 10,
        "createdAt": "2019-05-07T12:39:47.320Z",
        "updatedAt": "2019-05-09T15:31:25.957Z",
        "date": {
            "__type": "Date",
            "iso": "2019-05-20T12:00:00.000Z"
        },
        "idHousing": {
            "__type": "Relation",
            "className": "myOtherClassName"
        },
        "objectId": "XXXXXXXXXX",
        "__type": "Object",
        "className": "MyClassName"
    }]
}

1 Ответ

0 голосов
/ 20 мая 2019

Проблема заключалась в том, что я проверял, что возвращает менеджер, проверяя его неправильно, заставляя его пытаться что-то делать с нулевым объектом.

Решение было изменить if (objects != []) { на if let objs = objects {, и теперь оно работает.

...