SwiftのDBを使う ー 軽くにRealmSwiftで・・・。
こんにちは。川上です。
まだSwift2.0頃の時、以前に使ったことがありました。
結構、そう難しくないマニュアルを見本に、MyClassで色んなI/Fが簡単にカスタマに作成できていました。
Unity+iOS(Xcode)環境では、RealmのClass(Object)からMyClassに派生では、Buildができなかったので諦めてました。
でも、Swift2.0時のコードは、Swift4.0でも使えたので、ラッキーでした。
今回、写真画像をSaveしたかったので、そのまま、組み込みできました。
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 | import Foundation import UIKit import RealmSwift // MARK: Pictur用DB class PicturDB: Object { @objc dynamic var pict_id: String = NSUUID().uuidString @objc dynamic var pict_regday = NSDate(timeIntervalSince1970: 0) //登録日 override static func primaryKey() -> String? { return "pict_id" } //新規追加用のインスタンス生成メソッド static func create() -> PicturDB { let picturs = PicturDB() picturs.pict_regday = NSDate(); //現在時間 return picturs; } //インスタンス保存用メソッド func save() { // Realmデータベースへの保存はメインスレッドで行う必要がある。 // DispatchQueue.main.async { // // Realmデータベースに保存 // let realm = try! Realm() // try! realm.write { // realm.add(self) // } // } let realm = try! Realm() try! realm.write { realm.add(self, update: true); } } //インスタンス削除用メソッド func delete() { let realm = try! Realm() try! realm.write { realm.delete(self); } } //登録日順のデータの全件取得をする static func fetchAllPicturListSortByDate() -> [PicturDB] { let realm = try! Realm() //ascending: true 昇順 / false 降順 let picturs = realm.objects(PicturDB.self).sorted(byKeyPath: "pict_regday", ascending: true); var picturList: [PicturDB] = []; for pictur in picturs { picturList.append(pictur); } return picturList; } } |
から、DBの作成や読み込みや削除の諸々・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | // MARK: +++++ DBの作成と保存 let picdb = PicturDB.create() picdb.imagePhotos = pickedImage picdb.save() pictureArrayForCell.add(picdb) // MARK: == DBから 読み込み let picdbs = PicturDB.fetchAllPicturListSortByDate() for picdb in picdbs { self.pictureArrayForCell.add(picdb) } //データを1件削除 let personData: PicturDB = self.pictureArrayForCell[indexPath.row] as! PicturDB personData.delete() |
picdb.imagePhotos = pickedImage
の部分。
RealmにUIImageを保存には、NSDataに変更処理後の事になります。
次回分はその辺の予定です(^^;)。
ではでは。