A follow-up. I'm still not convinced this is 100% correct. My code was working fine again, then seemed to deteriorate and then stopped working altogether. I have been able to get it going again. It appears to be linked to the Cloudkit schema. The initialise of the schema alone does not appear to be enough. I am pretty sure it was before, because I would do the intialise, then manually create the indexes after to see my records. To get this working again I had to pre-create the indexes as I was getting error messages saying the mirroring delegate had not successfully initialized due to error
"Invalid Arguments" (12/2015); server message = "Field 'recordName' is not marked queryable";
So recordID needs a queryable index, and modTime needs queryable and sortable. I also noticed that there seems to be a glitch in the Cloudkit Dashboard, and if you add the two indexes for modTime at the same time, one of them won't appear. So make sure you check after. If this continues to plague me as it has now for over a month, I'll add an update. If anyone spots that I am making a newb error, please leave a comment and let me know.