You don't tell how you defined CKRecord, but I guess it contains at least
var iD: CKRecordID // Note that a property should start with lowercase
Did you look at using map ?
So, the code I tested is as follows:
typealias CKRecordID = String
struct CKRecord {
var iD: CKRecordID // Note that a property should start with lowercase
}
let record1 = CKRecord(iD: "1")
let record2 = CKRecord(iD: "2")
let record3 = CKRecord(iD: "3")
let records: [CKRecord] = [record1, record2, record3]
let recordIDs: [CKRecordID] = records.map( { (record: CKRecord) -> CKRecordID in
let id = record.iD
return id
} )
print(recordIDs)
you can use a much more compact map closure:
let recordIDs: [CKRecordID] = records.map { record in record.iD }