Я создаю облачный табло. Я загружаю приложение, и мое табличное представление появляется с моими записями из облачного набора.Как перезагрузить табличное представление после добавления новой записи?
Затем я использую метод добавления insertNewObject
, который добавляет запись в набор облаков, но это не отображается в моем представлении таблицы. Он будет отображаться только при следующем запуске приложения.
func insertNewObject(sender: AnyObject) {
let record = CKRecord(recordType: "CloudNote")
record.setObject("New Note", forKey: "Notes")
MyClipManager.SaveMethod(Database!, myRecord:record)
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
Это мой метод добавления. Я вызываю перезагрузку таблицы, как вы можете видеть, но ничего не происходит.
Мой код создания TableView:
// Tableview stuff --- Done
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
/////// Get number of rows
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return objects.count
}
//// FIll the table
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)
let object = objects[indexPath.row]
cell.textLabel!.text = object.objectForKey("Notes") as? String
return cell
}
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return true
}
В соответствии с просьбой: метод, который позволяет экономить до CloudDB
func SaveMethod(publicDatabase: CKDatabase, myRecord: CKRecord) -> CKRecord {
publicDatabase.saveRecord(myRecord, completionHandler:
({returnRecord, error in
if let err = error {
self.notifyUser("Save Error", message:
err.localizedDescription)
} else {
dispatch_async(dispatch_get_main_queue()) {
self.notifyUser("Success",
message: "Record saved successfully")
}
}
}))
return myRecord
}
Мой метод viewdidload в MasterView:
override func viewDidLoad() {
super.viewDidLoad()
// Database loading on runtime
Database = container.privateCloudDatabase
///Build Query
let query = CKQuery(recordType: "CloudNote", predicate: NSPredicate(format: "TRUEPREDICATE"))
///Perform query on DB
Database!.performQuery(query, inZoneWithID: nil) { (records, error) -> Void in
if (error != nil) {
NSLog("Error performing query. \(error.debugDescription)")
return
}
self.objects = records!
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
}
что этот метод, MyClipManager.SaveMethod (база данных !, myRecord: record) do ?? – satheeshwaran
'reloadData' ничего не поможет, если вы не обновите источник данных в виде таблицы. Где вы добавляете объект в массив 'objects'? – rmaddy
Привет, я добавил обновление с помощью SaveMethod. он сохраняет массив в наборе облаков. – Malorrr