Создание набора CKRecords, объединенного из массива - PullRequest
0 голосов
/ 25 февраля 2020

Swift 5, iOS 13, Xcode 11

У меня есть массив namesCopy = ["tom", "dick", "harry"] Я создал массив CKRecords [CKRecord] с имя поля "имя"

Я хочу объединить два вместе, и я придумал этот код. Но это не работает. Я слишком умный здесь.

 if namesCopy.count > 0 {
   let record = CKRecord(recordType: "directory")
   let box = Array(repeating: record, count: namesCopy.count)
   let merge = zip(namesCopy,box).map { record.setObject(($0 as! CKRecordValue), forKey: "name") }
   print("merge ",merge)
 }

Я думаю, что этот вопрос похож на этот, только не.

Проверьте, содержит ли массив CKRecords определенную запись

Не нужно ждать, мне нужно создать массив различных CKRecords, моя проблема более сложная.

for index in 0 ..< boxes.count {
   boxes[index].setObject(namesCopy[index] as __CKRecordObjCValue, forKey: "name")
 }

Это компилируется, но я не могу сохранить его в cloudKit, потому что я только что создал три записи с одинаковыми идентификаторами записей! глупо.

Это компилирует и работает, но хотел бы использовать zip & map, если смогу?

var boxes:[CKRecord] = []
for index in 0 ..< namesCopy.count {
  if namesCopy[index] != "" {
    let record = CKRecord(recordType: "directory")
    record.setObject(namesCopy[index] as __CKRecordObjCValue, forKey: "name")
    boxes.append(record)
  }
}
...