2015-08-28 2 views
0


Итак, у меня есть таблица, которая берет некоторые данные из моей базы данных и отображает их в своих ячейках. Я сделал кнопку обновления, которая перезагружает мой код, чтобы пользователь мог видеть новые записи, которые кто-то добавил в базу данных, когда вы нажимаете на нее.
Это как код моей кнопки обновления выглядит следующим образом:
Обновить данные в swift, таблицы каждые 30 секунд

@IBAction func refreshButton(sender: AnyObject) { 

     textArray.removeAllObjects() 

     let predicate = NSPredicate(value: true) 
     let query = CKQuery(recordType: "Conversation", predicate: predicate) 

     query.sortDescriptors = [NSSortDescriptor(key: "creationDate", ascending: true)] 

     publicCloudDatabase?.performQuery(query, inZoneWithID: nil, 
      completionHandler: ({results, error in 

       if (error != nil) { 
        dispatch_async(dispatch_get_main_queue()) { 
         self.notifyUser("Cloud Access Error", 
          message: error.localizedDescription) 
        } 
       } else { 
        if results.count > 0 { 
         var record = results[0] as! CKRecord 
         self.currentRecord = record 

         dispatch_async(dispatch_get_main_queue()) { 
          for x in results{ 
           self.textArray.addObject(x.objectForKey("message") as! String) 
           self.tableView.reloadData() 
          } 

         } 
        } else { 
         dispatch_async(dispatch_get_main_queue()) { 
          self.notifyUser("No Match Found", 
           message: "No record matching the address was found") 
         } 
        } 
       } 
      })) 
    } 

Я хотел бы, чтобы удалить эту кнопку и сделать обновление таблицы каждые 30 секунд (в фоне приложения - я не хотите, чтобы пользователь знал об этом), возможно ли это? Если да, как это можно сделать?
Спасибо!

ответ

0

Использование таймеры - один из способов, которым вы можете достичь, In ViewDidload

self.myTimer = NSTimer(timeInterval: 30.0, target: self, selector: "refresh", userInfo: nil, repeats: true) 
    NSRunLoop.mainRunLoop().addTimer(self.myTimer, forMode: NSDefaultRunLoopMode) 

func refresh() { 
    // a refresh of the table 
} 
0

1.performQuery каждые 30 секунд.

2.соберите различные между старыми датами и новыми данными.

3.Insert в другой части с помощью этого Api

  • (пустоты) insertRowsAtIndexPaths: (NSArray *) indexPaths withRowAnimation: (UITableViewRowAnimation) анимация

, а не reloadData

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