使用过滤器使单元格自行删除

时间:2017-07-28 11:46:57

标签: ios swift database firebase alamofire

相当新的编码!

我尝试使用firebase创建一个用户数据库,我可以在应用中进行过滤。我认为最简单的方法是在另一个视图控制器上切换过滤器,然后使用if语句使单元格不符合过滤器标准删除自己。我希望总共有大约6个过滤器,我认为这种方法是可扩展的。

我无法弄清楚如何让细胞自行删除。

此页面上只有一个过滤器。先前的视图控制器有一个按钮,用于切换" maleFilter"在1到0之间。当男性过滤器为1时,我希望用户不会有#34;男性"作为他们的性别删除自己。我怎么可能这样做?

谢谢!

///从Firebase设置并抓取数据库

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(_ animated: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(at:indexPath)(不起作用"

非常感谢任何帮助

1 个答案:

答案 0 :(得分:0)

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

尝试这个,结果你只使用Male获得过滤器数组。 希望它会对你有所帮助。