Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.82 KB | None | 0 0
  1. //
  2. // DetailViewController.swift
  3. // GD3_D_9244
  4. //
  5. // Created by Greg on 22/10/19.
  6. // Copyright © 2019 GD3_A_9125. All rights reserved.
  7. //
  8.  
  9. import UIKit
  10. import RealmSwift
  11.  
  12. class DetailViewController: UIViewController {
  13.  
  14. var realm: Realm! = nil
  15. @IBOutlet weak var name_d_9244: UILabel!
  16. @IBOutlet weak var npm_d_9244: UILabel!
  17.  
  18. var index: IntegerLiteralType!
  19.  
  20. var studentsDataList: Results<Student>{
  21. get{
  22. return try! Realm().objects(Student.self)
  23. }
  24. }
  25.  
  26. override func viewDidLoad() {
  27. super.viewDidLoad()
  28. // Do any additional setup after loading the view.
  29.  
  30. realm = try! Realm()
  31. name_d_9244.text = studentsDataList[index].name_d_9244
  32. npm_d_9244.text = studentsDataList[index].npm_d_9244
  33. }
  34. override func didReceiveMemoryWarning() {
  35. super.didReceiveMemoryWarning()
  36. }
  37.  
  38.  
  39. }
  40.  
  41.  
  42. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  43.  
  44. //
  45. // TableViewController.swift
  46. // GD3_D_9244
  47. //
  48. // Created by Lab PK 3 on 21/10/19.
  49. // Copyright © 2019 GD3_A_9125. All rights reserved.
  50. //
  51.  
  52. import Foundation
  53. import RealmSwift
  54.  
  55. class TableViewController: UITableViewController, UISearchResultsUpdating{
  56.  
  57.  
  58. let searchController = UISearchController(searchResultsController: nil)
  59. var realm: Realm!
  60. var studentsData: Student!
  61. var filteredTableData: [Student] = []
  62. var studentsDataList: Results<Student>{
  63. get{
  64. return try! Realm().objects(Student.self)
  65. }
  66. }
  67. var isFiltering: Bool {
  68. return searchController.isActive && !isSearchBarEmpty
  69. }
  70.  
  71. func updateSearchResults(for searchController: UISearchController) {
  72. let searchBar = searchController.searchBar
  73. filterContentForSearchText(searchBar.text!)
  74. }
  75.  
  76. func filterContentForSearchText(_ searchText: String) {
  77. filteredTableData = studentsDataList.filter { (student: Student) -> Bool in
  78. return student.name_d_9244.lowercased().contains(searchText.lowercased())
  79. }
  80.  
  81. tableView.reloadData()
  82. }
  83.  
  84. override func viewDidLoad() {
  85. super.viewDidLoad()
  86. realm = try! Realm()
  87.  
  88. // 1
  89. searchController.searchResultsUpdater = self
  90. // 2
  91. searchController.obscuresBackgroundDuringPresentation = false
  92. // 3
  93. searchController.searchBar.placeholder = "Search"
  94. // 4
  95. navigationItem.searchController = searchController
  96. // 5
  97. definesPresentationContext = true
  98.  
  99. tableView.tableHeaderView = searchController.searchBar
  100.  
  101. }
  102.  
  103. var isSearchBarEmpty: Bool {
  104. return searchController.searchBar.text?.isEmpty ?? true
  105. }
  106.  
  107.  
  108. override func numberOfSections(in tableView: UITableView) -> Int {
  109. return 1
  110. }
  111.  
  112. override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
  113. if isFiltering {
  114. return filteredTableData.count
  115. }
  116. return studentsDataList.count
  117. }
  118.  
  119. override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
  120. let cell = tableView.dequeueReusableCell(withIdentifier: "tableCell", for: indexPath)
  121.  
  122. let data: Student
  123. if isFiltering {
  124. data = filteredTableData[indexPath.row]
  125. } else {
  126. data = studentsDataList[indexPath.row]
  127. }
  128.  
  129. cell.textLabel!.text = data.name_d_9244
  130. cell.detailTextLabel!.text = data.npm_d_9244
  131. return cell
  132. }
  133.  
  134. override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
  135.  
  136. let index = indexPath.row
  137. performSegue(withIdentifier: "detailVC", sender: index)
  138. tableView.deselectRow(at: indexPath, animated: true)
  139. }
  140.  
  141. override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
  142. if editingStyle == .delete{
  143. let data = studentsDataList[indexPath.row]
  144.  
  145. try! self.realm.write({
  146. self.realm.delete(data)
  147. })
  148.  
  149. tableView.deleteRows(at: [indexPath], with: .automatic)
  150. }
  151. }
  152.  
  153. override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  154. if segue.identifier == "detailVC"{
  155. if let descVC = segue.destination as? DetailViewController{
  156. descVC.index = sender as? IntegerLiteralType
  157. }
  158. }
  159.  
  160. }
  161.  
  162. override func didReceiveMemoryWarning() {
  163. super.didReceiveMemoryWarning()
  164. }
  165.  
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement