2015-03-22 3 views
2

У меня проблема с обновлением записей CloudKit. То, что я хочу достичь, - это возможность разрешить пользователям голосовать за книгу, щелкнув строку tableview. Этот вид таблицы в настоящее время заполнен с использованием записей из данных облака. Я застрял, когда хочу получить запись (т. Е. Выбранную таблицу таблицы), и увеличил ее столбцы voteCount на 1, а затем сохранил ее обратно в облако и перезагрузил данные в виде таблицы.SWIFT/CloudKit - Обновление записи и сохранение ее обратно в контейнер

В настоящее время я получение записей с помощью:

booksIncludedInVote = [] 
    let cloudContainer = CKContainer.defaultContainer() 
    let publicDatabase =CKContainer.defaultContainer().publicCloudDatabase 

    let predicate = NSPredicate(value: true) 
    let query = CKQuery(recordType: "Book", predicate: predicate) 
    let queryOperation = CKQueryOperation(query: query) 
    queryOperation.desiredKeys = ["name", "author", "image", "description", "voteCount"] 
    queryOperation.queuePriority = .VeryHigh 
    queryOperation.resultsLimit = 50 
    queryOperation.recordFetchedBlock = { (record:CKRecord!) -> Void in 
    if let restaurantRecord = record { 
     self.booksIncludedInVote.append(restaurantRecord) 
    } 

Можете ли вы помочь мне обновить конкретную запись, а затем отправить его обратно в облако?

ответ

2

Вам также понадобится такой код:

operation.queryCompletionBlock = { cursor, error in 
      self.tableView.ReloadData() 
     } 
    publicDatabase.addOperation(operation) 
} 

func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) { 
    var record = self.booksIncludedInVote[indexPath.row] 
    // now increment the voteCount value in that record and save it using 
    publicDatabase.saveRecord(theRecord, completionHandler: { record, error in 
    } 
} 
+0

Спасибо за ваш вклад Эдвин - Я обновил свой код в настоящее время выборки и затем SetObject текущей записи. Однако я получаю ошибку «WRITE operation not allowed». Вы знаете, как обойти это? – Lindsey

+2

Это может быть несколько вещей. На панели управления CloudKit вы можете установить разрешения для каждого типа записи. Существует матрица, в которой вы можете установить 9 разных прав. создавать, читать, писать против мира, аутентифицироваться, создавать. По умолчанию кто-то может изменить только собственные записи. Вероятно, вам придется изменить это на аутентификацию. –

+0

Отлично - спасибо Эдвину, вместе оба ваши ответы помогли мне обновить записи. – Lindsey

Смежные вопросы