swift - Why is CloudKit not allowing me to save any records to my default container's public database? -


i have array of ckrecords i'm trying save default container's public database first time. created ckmodifyrecordsoperation , attempted add operation public database. unsuccessful i'm not getting error messages. tried adding each method individually database, sans ckoperation... unsuccessful, devoid of error messages. sure, checked cloudkit dashboard; there's nothing there.

below method in question. it's hooked simple ibaction button in nswindow. can ignore nested loops i'm creating ckrecords model data. seem working expected. error checking code inside of completion blocks ckmodifyrecordsoperation. specifically, modifyrecordscompletionblock printing: "saved 0 records cloudkit."

    @ibaction func uploaddatatocloudkit(_ sender: nsbutton) {         // cloudkit container , public database         let mycontainer = ckcontainer.default()         let publicdb = mycontainer.publicclouddatabase          // create array of cloudkit records can save batch         var cloudrecords = [ckrecord]()          let groups = paycodes().groups          // each paycode group...         paycodegroup in groups {             // create ckrecord , give type             let paycodegrouprecord = ckrecord(recordtype: "paycodedata")              // each paycode in group...             paycode in paycodegroup.paycodes {                 // fill new ckrecord key/value pairs                 paycodegrouprecord.setobject(paycodegroup.title nsstring, forkey: "group")                  if let commercialid = paycode.id.commercial nsstring?, let residentialid = paycode.id.residential nsstring? {                     paycodegrouprecord.setobject(commercialid, forkey: "commercialid")                     paycodegrouprecord.setobject(residentialid, forkey: "residentialid")                 }                  paycodegrouprecord.setobject(paycode.title nsstring, forkey: "title")                  if let description = paycode.description nsstring? {                     paycodegrouprecord.setobject(description, forkey: "description")                 }                  paycodegrouprecord.setobject((paycode.includestripcharge ? 1 : 0) nsnumber, forkey: "includestripcharge")                 paycodegrouprecord.setobject((paycode.needsresolutioncode ? 1 : 0) nsnumber, forkey: "needsresolutioncode")                   paycodegrouprecord.setobject(paycode.pay.commercial nsnumber, forkey: "commercialpay")                 paycodegrouprecord.setobject(paycode.pay.residential nsnumber, forkey: "residentialpay")                  // save new ckrecord array                 cloudrecords.append(paycodegrouprecord)             }         }          print("there \(cloudrecords.count) records saved...")         // print(cloudrecords)         // create operation save records         let operation = ckmodifyrecordsoperation(recordstosave: cloudrecords, recordidstodelete: nil)          operation.perrecordcompletionblock = { savedrecord, error in             guard error != nil else {                 print("there error: \(error!.localizeddescription)")                 return             }              print("saved record cloudkit")         }          operation.modifyrecordscompletionblock = { savedrecords, deletedrecordids, error in             guard error != nil else {                 print("there error: \(error!.localizeddescription)")                 return             }              guard let savedrecords = savedrecords else { return }             print("saved \(savedrecords.count) records cloudkit")         }          // run operation         publicdb.add(operation) //        cloudrecords.foreach { record in //            publicdb.save(record) { savedrecord, error in //                guard error != nil else { //                    print("there error: \(error!.localizeddescription)") //                    return //                } //                 //                guard let savedrecord = savedrecord else { return } //                print("saved record: \(savedrecord.allkeys())") //            } //        }     } 

your problem duplicate records reuse of ckrecord instance.

change:

for paycodegroup in groups {     // create ckrecord , give type     let paycodegrouprecord = ckrecord(recordtype: "paycodedata")      // each paycode in group...     paycode in paycodegroup.paycodes {         // fill new ckrecord key/value pairs         paycodegrouprecord.setobject(paycodegroup.title nsstring, forkey: "group") 

to:

for paycodegroup in groups {     // each paycode in group...     paycode in paycodegroup.paycodes {         // create ckrecord , give type         let paycodegrouprecord = ckrecord(recordtype: "paycodedata")          // fill new ckrecord key/value pairs         paycodegrouprecord.setobject(paycodegroup.title nsstring, forkey: "group") 

Comments

Popular posts from this blog

Sort a complex associative array in PHP -

vb.net - How to ignore if a cell is empty nothing -

recursion - Can every recursive algorithm be improved with dynamic programming? -