Parse - JSON text did not start with array or object

145 views Asked by At

I've got this issue when running my code to update a few records. I have 138 records.

I've set limit to get 1000 record per one request and then I've tried to update my new column I've created:

But I get this error when I save PFObject in background

Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.

I found this link with similar problem, but looks like that ticket is resolved and closed.

Looking in my code below I am trying to cycle over 138 records to set new key value for PFObject and then I save it. Normally I don't need such operation, maybe this happens because of lot of records were updated at once. But just wonder if this is still the case in api.

This is my code:

let salaryRepository = SalaryDataRepository(remoteDataSource: SalaryRemoteDataSource(), localDataSource: SalaryLocalDataSource())
        
        salaryRepository.getSalaries(with: nil, payPeriod: nil, paidDateDoesNotExist: false, limit: 0, skip: 0, completion: { (result) in
            
            switch result {
            case let .success(salaries):
                
                guard let unwrappedSalaries = salaries else {
                    return
                }
                
                var counter = 0
                
                for salary in unwrappedSalaries {
                    
                    var totalQuote1 = 0.0
                    
                    if let pfSalary = salary.getPFSalary() {
                        
                        if let subTotal = pfSalary["subTotal"] as? NSNumber, let unwrappedCustomExchangeRate = pfSalary["customExchangeRate"] as? NSNumber {
                            
                            if let pfProjectEmployee = pfSalary["projectEmployee"] as? PFObject {
                                
                                if let pfProjectEmployeeDetails = pfProjectEmployee["projectEmployeeDetails"] as? PFObject {
                                    
                                    if let transactionFee = pfProjectEmployeeDetails["transactionFee"] as? NSNumber {
                                        
                                        
                                        
                                        let subTotalQuote = NSNumber.getMultiplying(a: subTotal, b: unwrappedCustomExchangeRate)
                                        let totalQuote = subTotalQuote.afterFee(fee: transactionFee)
                                        
                                        pfSalary["totalQuote"] = totalQuote
                                        
                                        totalQuote1 = totalQuote.doubleValue
                                        
                                        print(transactionFee)
                                        
                                        counter = counter + 1
                                        
                                    }
                                    
                                }
                                
                            }
                            
                            
                            pfSalary.saveInBackground { (success, error) in
                                if error == nil && success == true {
                                    print("SUCCESS:")
                                    print(totalQuote1)
                                } else {
                                    print("ERROR:")
                                    print(totalQuote1)
                                }
                            }
                        }
                    }
                    
                    
                    
                }
                
                print("total updated:")
                print(counter)
                
                break
            case let .failure(error):
                print(error)
                break
            }
            
            
        })
0

There are 0 answers