2017-07-28 55 views
0

編碼相當新!使用過濾器來刪除自己的細胞

我試圖創建一個用戶數據庫與我可以在應用程序中篩選的Firebase。我想最簡單的方法是在另一個視圖控制器上切換過濾器,然後使用if語句讓單元格不符合過濾器標準來刪除它們自己。我希望總共有6個左右的過濾器,我認爲這種方法是可擴展的。

我無法弄清楚如何讓單元格自己刪除。

此頁面上只有一個過濾器。先前的視圖控制器具有一個按鈕,用於在1和0之間切換「maleFilter」。當男性篩選器爲1時,我希望沒有「Male」作爲其性別的用戶刪除自己。我該怎麼做呢?

謝謝!

///設置和抓住從火力地堡

import UIKit 
import Alamofire 
import Gloss 

class UserTableViewController: UITableViewController { 

var user: User? 
var users: [User] = [] 
var myIndex = 0 
var maleFilter: Int? 


override func viewDidLoad() { 
    super.viewDidLoad() 
    Alamofire.request("https://database.firebaseio.com/users.json").responseJSON(completionHandler: { 
     response in 

     if let usersDictionary = response.result.value as? JSON { 

      for (key, value) in usersDictionary { 

       if let usersDictionary = value as? JSON { 
        var user = User(json: usersDictionary) 
        user?.userKey = key 
        self.users.append(user!) 
        self.tableView.reloadData() 
       } 
      } 
     } 
    }) 
} 

數據庫///這是我掙扎
覆蓋FUNC viewWillAppear中(_動畫:BOOL){ super.viewWillAppear(真)

//maleFilter has its value toggled between 1 and 0 in a prior view controller 
print(maleFilter) 

//maleFilter == 1 represents the filter being toggled on 
if maleFilter == 1 { 
     if user?.userGender == "Male" { 
      print ("male") 
     } else { 

我試過這個代碼,我在網上找到,並不能得到它的工作

  /* 
      users.remove(at: indexPath) 
      users.removeAtIndex(deletionIndexPath.row) 
      tableView.deleteRows(at: [indexPath.row], with: UITableViewRowAnimation) 
      */ 

我還發現,這個網上,並一直無法得到它的工作

 /* 
let deleteAction = UITableViewRowAction(style: .destructive, title: "Delete") { (rowAction: UITableViewRowAction, indexPath: IndexPath) -> Void in 
      func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) { 

       self.tableView.deleteRows(at: [indexPath], with: .automatic) 
       self.tableView.reloadData() 
      } 
     } 
    */ 
} else { 
     print("Male filter not applied") 
    } 
    self.tableView.reloadData() 
} 

我覺得答案很可能是非常簡單的。像「self.users.remove(在:indexPath)(不工作」

任何幫助深表感謝

+0

關於爲什麼你不使用Firebase Library的任何具體原因?無論如何,你不僅要從tableView中刪除單元格,而且要刪除與該過濾器相對應的數據源,或者你必須在'tableViewDatasourceDelegate'函數中使用'if'語句來檢查過濾條件並在'viewWill'中調用'_yourtableView.reloadData()' Appear'。 – Dravidian

回答

0
filterArray = UsersArray.filter({ m in 
m.UserGender.contains("Male") 
}) 

試試這一個,在結果u得到只與男性濾波器陣列。 希望它對你有所幫助