Realm Java 3.0已发布,因此您可以使用易于使用的Realm。
我在iOS上制作了DAO(iOS领域仍然是2系列),我认为它可能更易于使用。
https://github.com/HIkaruSato/RealmSample-iOS/
DAO
道
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 | import Foundation import RealmSwift class RealmBaseDao <T : RealmSwift.Object> { let realm: Realm init() { try! realm = Realm() } /** * 新規主キー発行 */ func newId() -> Int? { guard let key = T.primaryKey() else { //primaryKey未設定 return nil } if let last = realm.objects(T.self).last as? RealmSwift.Object, let lastId = last[key] as? Int { return lastId + 1 } else { return 1 } } /** * 全件取得 */ func findAll() -> Results< T > { return realm.objects(T.self) } /** * 1件目のみ取得 */ func findFirst() -> T? { return findAll().first } /** * 指定キーのレコードを取得 */ func findFirst(key: AnyObject) -> T? { return realm.object(ofType: T.self, forPrimaryKey: key) } /** * 最後のレコードを取得 */ func findLast() -> T? { return findAll().last } /** * レコード追加を取得 */ func add(d :T) { do { try realm.write { realm.add(d) } } catch let error as NSError { print(error.description) } } /** * T: RealmSwift.Object で primaryKey()が実装されている時のみ有効 */ func update(d: T, block:(() -> Void)? = nil) -> Bool { do { try realm.write { block?() realm.add(d, update: true) } return true } catch let error as NSError { print(error.description) } return false } /** * レコード削除 */ func delete(d: T) { do { try realm.write { realm.delete(d) } } catch let error as NSError { print(error.description) } } /** * レコード全削除 */ func deleteAll() { let objs = realm.objects(T.self) do { try realm.write { realm.delete(objs) } } catch let error as NSError { print(error.description) } } } |
如何使用
如何使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import Foundation import RealmSwift //Realm Object class SampleObject: Object { dynamic var id = 0 dynamic var created = NSDate() override static func primaryKey() -> String? { return "id" } } class SampleObjectViewModel { var id = 0 var created = NSDate() var description:String { return "\(id)," + created.description } //RealmBaseDao<Realm Objectクラス>で、基本的なことができる static let dao = RealmBaseDao<SampleObject>() init(sampleObject:SampleObject) { id = sampleObject.id created = sampleObject.created } static func load() -> [SampleObjectViewModel] { let objects = dao.findAll() return objects.map { SampleObjectViewModel(sampleObject: $0) } } static func create() -> SampleObjectViewModel { let object = SampleObject() object.id = dao.newId()! dao.add(d: object) let viewModel = SampleObjectViewModel(sampleObject:object) return viewModel } func update() { let dao = type(of: self).dao guard let object = dao.findFirst(key: id as AnyObject) else { return } object.created = created let _ = dao.update(d: object) } func delete() { let dao = type(of: self).dao guard let object = dao.findFirst(key: id as AnyObject) else { return } dao.delete(d: object) } } |