Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.63 KB | None | 0 0
  1. import RealmSwift
  2.  
  3. internal struct RealmService {
  4.  
  5. internal static let shared = RealmService()
  6. private let realm = try! Realm()
  7.  
  8. // MARK: - Setter
  9. internal func add<T: Object>(object: T) {
  10. do {
  11. try realm.write({
  12. realm.add(object)
  13. })
  14. } catch {
  15. printError()
  16. }
  17. }
  18.  
  19. internal func add<T: Object>(array: [T]) {
  20. do {
  21. try realm.write({
  22. realm.add(array)
  23. })
  24. } catch {
  25. printError()
  26. }
  27. }
  28.  
  29. // MARK: - Getter
  30. internal func get<T: Object>(objectsOfInstanceType instanceType: T.Type) -> Results<T>? {
  31. let objects = realm.objects(instanceType)
  32. if !objects.isEmpty {
  33. return objects
  34. }
  35. return nil
  36. }
  37.  
  38. internal func get<T: Object>(objectsOfInstanceType instanceType: T.Type, withPredicate predicate: NSPredicate) -> Results<T>? {
  39. if let objects = get(objectsOfInstanceType: instanceType) {
  40. let filteredObjects = objects.filter(predicate)
  41. if !filteredObjects.isEmpty {
  42. return filteredObjects
  43. }
  44. }
  45. return nil
  46. }
  47.  
  48. internal func get<T: Object>(arrayOfInstanceType instanceType: T.Type) -> [T]? {
  49. if let objects = get(objectsOfInstanceType: instanceType) {
  50. return objects.toArray()
  51. }
  52. return nil
  53. }
  54.  
  55. internal func get<T: Object>(arrayOfInstanceType instanceType: T.Type, withPredicate predicate: NSPredicate) -> [T]? {
  56. if let objects = get(objectsOfInstanceType: instanceType, withPredicate: predicate) {
  57. return objects.toArray()
  58. }
  59. return nil
  60. }
  61.  
  62. // MARK: - Remove
  63. internal func remove<T: Object>(object: T) {
  64. realm.beginWrite()
  65. realm.delete(object)
  66. do {
  67. try realm.commitWrite()
  68. } catch {
  69. printError()
  70. }
  71. }
  72.  
  73. internal func remove<T: Object>(objectsOfInstanceType instanceType: T.Type) {
  74. let objects = realm.objects(instanceType)
  75. realm.beginWrite()
  76. realm.delete(objects)
  77. do {
  78. try realm.commitWrite()
  79. } catch {
  80. printError()
  81. }
  82. }
  83.  
  84. // MARK: - Helpers
  85. internal func exists<T: Object>(objectsOfInstanceType instanceType: T.Type, withPredicate predicate: NSPredicate) -> Bool {
  86. if let _ = get(objectsOfInstanceType: instanceType, withPredicate: predicate) {
  87. return true
  88. } else {
  89. return false
  90. }
  91. }
  92.  
  93. private func printError() {
  94. print("Realm Error")
  95. }
  96.  
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement