0

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
            }
            
            
        })
Matrosov Oleksandr
  • 25,505
  • 44
  • 151
  • 277
  • What is the line throwing/printing the error? – Davi Macêdo Dec 23 '21 at 17:31
  • @DaviMacêdo this is highlighted in my question I will copy it here, thanks for asking: `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.` – Matrosov Oleksandr Dec 27 '21 at 21:06
  • Got it. But what is the line of your code that is throwing this error? – Davi Macêdo Dec 28 '21 at 16:10

0 Answers0