2016-11-30 88 views
0

是否有可能根據其結果使用多個過濾器?基於if else語句的iOS領域多重過濾器

我想根據名稱篩選大學課程列表,並檢查過濾的課程列表是否大於0.如果不是,我會自動將它們全部取出。

這是即時通訊做,現在,給用戶一個按鈕來顯示所有如果視圖是空的:

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

這聽起來像這樣的事情應該工作。基本上,如果有課程名稱,請將課程設置爲過濾結果。然後,如果課程爲零或空,請將其設置爲全部顯示。

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() 
    }) 
} 
+0

我用你的解決方案。但是我把所有東西放在令牌塊中。因爲每次用戶導航到視圖時,都會提取新的數據。在viewDidLoad方法中,course == nil總是如此 –