基于if else语句的iOS领域多重过滤器

时间:2016-11-30 19:55:54

标签: ios swift filtering realm

是否可以根据结果使用多个过滤器?

我想根据他们的名字过滤大学课程列表,并检查过滤课程列表是否为>如果没有,我会自动获取它们。

这就是我现在所做的,给用户一个按钮,以显示所有视图是否为空:

    override func viewDidLoad() {

        if let courseName = GetCourseName(){
            let predicate = NSPredicate(format: "name contains %@", courseName)
            courses = try! RealmManager.realm().objects(Course.self).filter(predicate).sorted("name")
            token = try! RealmManager.realm().objects(Course.self).filter(predicate).addNotificationBlock({ changes in
                self.tableView.reloadData()
            })

            self.navigationItem.rightBarButtonItems = [UIBarButtonItem(title: "Show all", style: .Plain, target: self, action: #selector(showAll(_:)))]

        }else{
            courses = try! RealmManager.realm().objects(Course.self).sorted("name")
            token = try! RealmManager.realm().objects(Course.self).addNotificationBlock({ changes in
                self.tableView.reloadData()
            })
        }
    }

func showAll(sender:AnyObject)
    {
        courses = try! RealmManager.realm().objects(Course.self).sorted("name")
        token = try! RealmManager.realm().objects(Course.self).addNotificationBlock({ changes in
            self.tableView.reloadData()
        })

        self.navigationItem.rightBarButtonItems?.removeAll()
    }

1 个答案:

答案 0 :(得分:1)

听起来这样的事情应该有效。基本上,如果有课程名称,请将课程设置为过滤结果。然后,如果课程为零或空,请将其设置为显示全部。

override func viewDidLoad() {
    if let courseName = GetCourseName(){
        let predicate = NSPredicate(format: "name contains %@", courseName)
        courses = try! RealmManager.realm().objects(Course.self).filter(predicate).sorted("name")
    }

    if course == nil || course.isEmpty {
        courses = try! RealmManager.realm().objects(Course.self).sorted("name")
    }

    token = courses.addNotificationBlock({ changes in
        self.tableView.reloadData()
    })
}