title: Trouble Replacing CloudKit Records
body: <p>I get the fatal error: "Could not cast value of type 'NSTaggedPointerString' to 'NSData'" on the line "<code>if (NSKeyedUnarchiver.unarchiveObject(with: loadedData as! Data) as? CKRecord) != nil</code>". </p>
  
  <p>There is another fatal error:"Attempt to set a non-property-list object  as an NSUserDefaults/CFPreferences value for key locationData" when I try to save locationRecord as a default.</p>
  
  <pre><code>var locationRecord = CKRecord(recordType: "location")
  
  func getRecordToUpdate(_ locations:CLLocation)
  {
      if defaults1.object(forKey: "locationData") == nil{
          locationRecord.setObject(locations, forKey: "location")
          defaults1.set(locationRecord, forKey: "locationData")
          self.updateLocationRecord(locations: locations)
      }else{
          if let loadedData = defaults1.object(forKey: "locationData") {
              print("continue")
              if (NSKeyedUnarchiver.unarchiveObject(with: loadedData as! Data)) != nil
              {
                  let publicDB = CKContainer.default().publicCloudDatabase
                  publicDB.fetch(withRecordID: locationRecord.recordID,completionHandler: {
                      (record, error) in
                      if error == nil
                      {
                          publicDB.delete(withRecordID: (record?.recordID)!, completionHandler: {
                              (record, error) in
                              if(error == nil){
                                  print("old record delete")
                                  self.locationRecord.setObject(locations, forKey: "location")
                                  self.defaults1.set(self.locationRecord, forKey: "locationData")
                                  self.updateLocationRecord(locations: locations)
                              }
                              else{
                              }
                          })
                      }else{
                          print("Error fetching previous record")
                          }
                  })
              }
          }
      }
  }
      func updateLocationRecord(locations: CLLocation)
      {
          locationRecord.setObject(locations, forKey: "location")
          let publicData = CKContainer.default().publicCloudDatabase
          publicData.save(locationRecord, completionHandler: { record, error in
          })
          if error == nil
          {
              print("Location saved")
          }
      }
  </code></pre>