大阪市中央区 システムソフトウェア開発会社

営業時間:平日09:15〜18:15
MENU

(主アプリ+ウィジェット)X AppGroup + Realm 用でRealmMgrを書く

著者:川上洋
公開日:2021/11/09
最終更新日:2021/11/09
カテゴリー:技術情報 雑記
タグ:

こんにちは。川上です。

まずは、主アプリに組み込む画像を、
・「写真」アプリ(UIImagePickerController)
・D&Dサポートする外部アプリ
で、取得してRealmに保存するんです。

で、作成するRealmLibMgrは、アプリとウィジェットでRealmにアクセスする共通ソースで使うんです。
DBの検索用のBaseRealメンバの”fetchStr”で、DBを取得する用I/Fを作成しました。

class BaseRealm: Object,Identifiable {
     ・・・
  static func fetchListSortByFetchStr_T(_ type: Element.Type
                                            ,_ terFetch:String) -> [Element]
   
        // Query using an NSPredicate
        let predicate = NSPredicate(format: "fetchStr = %@ ",terFetch)
        
        var ress:[Element] = []
        let res = realm.objects(Element.self).filter(predicate)
        for fetch in res {
            ress.append(fetch);
        }
        return ress
}

RealmLibMgrにRealmDBにimageを保存する感じのI/Fです。

// MARK: - +++ UIKit U/I +++ RealmLibMgr()
class RealmLibMgr {
	// MARK: ⭐️ === RealmDBに Imageを保存する
	static func setImageToRaalm( _ key:String,
	                             _ setImage :UIImage,
	                             _ numidx :Int = 0) -> UIImage {
	
	
		// === get RealmDB by  "fetchStr"
		let conte_db_arry = GroundImgDB.fetchListSortByFetchStr_T(GroundImgDB.self,key)
		print("=====" + #function + ": conte_db_arry.count = \(conte_db_arry.count)")
		let grndb =  GroundImgDB.create()
		// === 初回Img set
		if conte_db_arry.isEmpty {
		    print("=====" + #function + "isEmpty : numidxt = \(numidx),key=\(key)")
		    grndb.cur_num = numidx
		    grndb.fetchStr = key
		    grndb.imagePhotos = setImage 
		    grndb.save()
		} 
		// === Img Update
		else {
		    // conte_db_arry,count 1で、複数keyはない
		    let grndb_org = conte_db_arry[0]
		    grndb.obj_id = grndb_org.obj_id
		    grndb.regday = grndb_org.regday
		    grndb.fetchStr = key
		    grndb.cur_num = grndb_org.cur_num
		    grndb.imagePhotos = setImage 
		    grndb.save()
		}
		return setImage
	} // === setImageToRaalm
} // == RealmLibMgr 

で、次は、DBからのReadですwね。

ではでは。

    上に戻る