TSRealmManager.swift 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. //
  2. // TSRealmManager.swift
  3. // AIEmoji
  4. //
  5. // Created by 100Years on 2025/2/11.
  6. //
  7. import RealmSwift
  8. let TSRMShared = TSRealmManager.shared
  9. extension List {
  10. subscript(safe index: Int) -> Element? {
  11. return indices.contains(index) ? self[index] : nil
  12. }
  13. }
  14. class TSRealmManager {
  15. static let shared = TSRealmManager()
  16. private init() {
  17. /*设置新的版本号
  18. 3.6.1 ->4
  19. 3.6.6 ->7
  20. 3.6.8 ->8
  21. **/
  22. let newSchemaVersion: UInt64 = 8
  23. // 获取默认配置
  24. var config = Realm.Configuration.defaultConfiguration
  25. // 设置新版本号
  26. config.schemaVersion = newSchemaVersion
  27. // 设置迁移块
  28. config.migrationBlock = { migration, oldSchemaVersion in
  29. if oldSchemaVersion < newSchemaVersion {
  30. // 执行迁移操作
  31. }
  32. }
  33. // 将修改后的配置设置为默认配置
  34. Realm.Configuration.defaultConfiguration = config
  35. debugPrint("Realm 数据库已成功打开,版本号: \(newSchemaVersion)")
  36. }
  37. var realm:Realm {
  38. return try! Realm()
  39. }
  40. // 创建数据
  41. func create<T: Object>(_ object: T) {
  42. do {
  43. try realm.write {
  44. realm.add(object,update: .modified)
  45. }
  46. } catch {
  47. print("Failed to create object: \(error)")
  48. }
  49. }
  50. // 读取数据
  51. func read<T: Object>(_ type: T.Type) -> Results<T> {
  52. return realm.objects(type)
  53. }
  54. func update<T: Object>(_ object: T) {
  55. do {
  56. try Realm().write {
  57. try Realm().add(object,update: .modified)
  58. }
  59. } catch {
  60. print("Failed to update object: \(error)")
  61. }
  62. }
  63. // 删除数据
  64. func delete<T: Object>(_ object: T) {
  65. do {
  66. try Realm().write {
  67. try Realm().delete(object)
  68. }
  69. } catch {
  70. print("Failed to delete object: \(error)")
  71. }
  72. }
  73. func writeThread(wt: ()->Void) {
  74. do {
  75. try Realm().write {
  76. wt()
  77. }
  78. } catch {
  79. print("Failed to writeThread: \(error)")
  80. }
  81. }
  82. }
  83. /*
  84. // 创建数据
  85. let person = Person()
  86. person.name = "John"
  87. person.age = 30
  88. RealmManager.shared.create(person)
  89. // 读取数据
  90. let allPersons = RealmManager.shared.read(Person.self)
  91. for person in allPersons {
  92. print("Name: \(person.name), Age: \(person.age)")
  93. }
  94. // 更新数据
  95. if let firstPerson = allPersons.first {
  96. RealmManager.shared.update(firstPerson) { person in
  97. person.age = 31
  98. }
  99. }
  100. // 删除数据
  101. if let firstPerson = allPersons.first {
  102. RealmManager.shared.delete(firstPerson)
  103. }
  104. */