我的Swift應用程序,我需要在tableview中顯示數據。服務器端的數據經常變化,因此我需要刪除以前的任何數據並添加新獲取的數據。我能夠刪除和獲取,我可以在控制檯以及領域瀏覽器中看到新數據。但是,結果中表格視圖控制器中的數據不可用。刪除,添加和顯示數據swift table view controller
class ServiceProvidersTableViewController: UITableViewController {
// MARK: - Data Source
var serviceSubCategory: String = ""
var serviceSubCategories: Results<ServiceSubCategory>?
// MARK: - Realm
let realm = try! Realm()
let fetchData = FetchData()
override func viewDidLoad() {
super.viewDidLoad()
self.deleteSubCategories()
FetchData.get(ServiceSubCategory.self, params: ["subCategoryId": serviceSubCategory], success: {
self.infoAlert("Service Categories", message: "Fetch Successful")
}) {
self.infoAlert("Failed", message: "Fetch Failed")
}
self.fetchSubCategories()
}
func deleteSubCategories()
{
let subCategories = realm.objects(ServiceSubCategory.self)
print("Before delete \(subCategories)")
try! realm.write{
realm.delete(subCategories)
}
print("After delete \(subCategories)")
}
func fetchSubCategories() {
self.realm.refresh()
self.serviceSubCategories = self.realm.objects(ServiceSubCategory)
tableView.reloadData()
print("After fetch \(self.serviceSubCategories)")
}
struct Storyboard {
static let CellIndentifier = "ServiceProvidersCell"
}
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
print(self.serviceSubCategories!.count)
return self.serviceSubCategories!.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(Storyboard.CellIndentifier, forIndexPath: indexPath) as! ServiceProvidersTableViewCell
print(serviceSubCategories)
cell.serviceSubCategories = self.serviceSubCategories![indexPath.row]
return cell
}
func infoAlert(title:String,message:String) -> Void {
let actionSheetController: UIAlertController = UIAlertController(title:title, message:message, preferredStyle: .Alert)
let cancelAction: UIAlertAction = UIAlertAction(title: "Cancel", style: .Cancel) { action -> Void in }
actionSheetController.addAction(cancelAction)
self.presentViewController(actionSheetController, animated: true, completion: nil)
}
}
當你的新結果可用時,你調用了'tableView.reloadData()'嗎? – Santosh
是的,我正在瀏覽https://blog.hyphe.me/realm-and-alamofire-in-a-effective-harmony/上的教程。我如何檢查新的結果? –
您是否設置了'tableView'的'delegate'&'dataSource'屬性? – Santosh