亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Swift > 正文

swift 3.0中realm封裝類示例代碼

2020-03-09 17:44:02
字體:
來源:轉載
供稿:網友

前言

如果你用夠了FMDB或者CoreData,不妨試試realm,本文主要給大家介紹了關于swift/172286.html">swift 3.0中realm封裝類的相關內容,分享出來供大家參考學習,下面來一起看看吧。

最新更新,特別感謝@deepindo

 /// 查詢排序后所有數據,關鍵詞及是否升序 static func selectScoretByAll<T: Object>(_: T.Type ,key: String, isAscending: Bool) -> Results<T>{  return sharedInstance.objects(T.self).sorted(byProperty: key, ascending: isAscending) }
import UIKitimport RealmSwiftclass ZYWRealm: NSObject {  /// realm 數據庫的名稱 static let username = "MY-DB"  static let sharedInstance = try! Realm()  //--MARK: 初始化 Realm /// 初始化進過加密的 Realm, 加密過的 Realm 只會帶來很少的額外資源占用(通常最多只會比平常慢10%) static func initEncryptionRealm() {  // 說明: 以下內容是可以合并操作的,但為了能最大限度的展示各個操作內容,故分開設置 Realm    // 產生隨機密鑰  var key = Data(count: 64)    _ = key.withUnsafeMutableBytes {mutableBytes in   SecRandomCopyBytes(kSecRandomDefault, key.count, mutableBytes)  }   // 獲取加密 Realm 文件的配置文件  var config = Realm.Configuration(encryptionKey: key)    // 使用默認的目錄,但是使用用戶名來替換默認的文件名  config.fileURL = config.fileURL!.deletingLastPathComponent().appendingPathComponent("/(username).realm")    // 獲取我們的 Realm 文件的父級目錄  let folderPath = config.fileURL!.deletingLastPathComponent().path    /**   * 設置可以在后臺應用刷新中使用 Realm   * 注意:以下的操作其實是關閉了 Realm 文件的 NSFileProtection 屬性加密功能,將文件保護屬性降級為一個不太嚴格的、允許即使在設備鎖定時都可以訪問文件的屬性   */  // 解除這個目錄的保護   try! FileManager.default.setAttributes([FileAttributeKey.protectionKey: FileProtectionType.none], ofItemAtPath: folderPath)    // 將這個配置應用到默認的 Realm 數據庫當中  Realm.Configuration.defaultConfiguration = config   }  /// 初始化默認的 Realm static func initRealm() {  var config = Realm.Configuration()    // 使用默認的目錄,但是使用用戶名來替換默認的文件名   config.fileURL = config.fileURL!.deletingLastPathComponent().appendingPathComponent("/(username).realm")  // 獲取我們的 Realm 文件的父級目錄  let folderPath = config.fileURL!.deletingLastPathComponent().path    // 解除這個目錄的保護  try! FileManager.default.setAttributes([FileAttributeKey.protectionKey: FileProtectionType.none],               ofItemAtPath: folderPath)    // 將這個配置應用到默認的 Realm 數據庫當中  Realm.Configuration.defaultConfiguration = config }  //--- MARK: 操作 Realm /// 做寫入操作 static func doWriteHandler(_ clouse: @escaping ()->()) { // 這里用到了 Trailing 閉包  try! sharedInstance.write {   clouse()  } }  ///后臺做寫入操作  static func BGDoWriteHandler(_ clouse: @escaping ()->()) {  try! Realm().write {   clouse()  } }  /// 添加一條數據 static func addCanUpdate<T: Object>(_ object: T) {  try! sharedInstance.write {   sharedInstance.add(object, update: true)  } } static func add<T: Object>(_ object: T) {  try! sharedInstance.write {   sharedInstance.add(object)  } } /// 后臺單獨進程寫入一組數據 static func addListDataAsync<T: Object>(_ objects: [T]) {        let queue = DispatchQueue.global(priority: DispatchQueue.GlobalQueuePriority.default)  // Import many items in a background thread  queue.async {   // 為什么添加下面的關鍵字,參見 Realm 文件刪除的的注釋   autoreleasepool {    // 在這個線程中獲取 Realm 和表實例    let realm = try! Realm()    // 批量寫入操作    realm.beginWrite()    // add 方法支持 update ,item 的對象必須有主鍵    for item in objects {     realm.add(item, update: true)    }    // 提交寫入事務以確保數據在其他線程可用    try! realm.commitWrite()   }  } }  static func addListData<T: Object>(_ objects: [T]) {  autoreleasepool {   // 在這個線程中獲取 Realm 和表實例   let realm = try! Realm()   // 批量寫入操作   realm.beginWrite()   // add 方法支持 update ,item 的對象必須有主鍵   for item in objects {    realm.add(item, update: true)   }   // 提交寫入事務以確保數據在其他線程可用   try! realm.commitWrite()  } }  /// 刪除某個數據 static func delete<T: Object>(_ object: T) {  try! sharedInstance.write {   sharedInstance.delete(object)  } }  /// 批量刪除數據 static func delete<T: Object>(_ objects: [T]) {  try! sharedInstance.write {   sharedInstance.delete(objects)  } } /// 批量刪除數據 static func delete<T: Object>(_ objects: List<T>) {  try! sharedInstance.write {   sharedInstance.delete(objects)  } } /// 批量刪除數據 static func delete<T: Object>(_ objects: Results<T>) {  try! sharedInstance.write {   sharedInstance.delete(objects)  } }  /// 批量刪除數據 static func delete<T: Object>(_ objects: LinkingObjects<T>) {  try! sharedInstance.write {   sharedInstance.delete(objects)  } }   /// 刪除所有數據。注意,Realm 文件的大小不會被改變,因為它會保留空間以供日后快速存儲數據 static func deleteAll() {  try! sharedInstance.write {   sharedInstance.deleteAll()  } }  /// 根據條件查詢數據 static func selectByNSPredicate<T: Object>(_: T.Type , predicate: NSPredicate) -> Results<T>{  return sharedInstance.objects(T.self).filter(predicate) }  /// 后臺根據條件查詢數據 static func BGselectByNSPredicate<T: Object>(_: T.Type , predicate: NSPredicate) -> Results<T>{  return try! Realm().objects(T.self).filter(predicate) }  /// 查詢所有數據 static func selectByAll<T: Object>(_: T.Type) -> Results<T>{   return sharedInstance.objects(T.self) } //--- MARK: 刪除 Realm /*  參考官方文檔,所有 fileURL 指向想要刪除的 Realm 文件的 Realm 實例,都必須要在刪除操作執行前被釋放掉。  故在操作 Realm實例的時候需要加上 autoleasepool 。如下:  autoreleasepool {  //所有 Realm 的使用操作  }  */ /// Realm 文件刪除操作 static func deleteRealmFile() {  let realmURL = Realm.Configuration.defaultConfiguration.fileURL!  let realmURLs = [   realmURL,   realmURL.appendingPathExtension("lock"),   realmURL.appendingPathExtension("log_a"),   realmURL.appendingPathExtension("log_b"),   realmURL.appendingPathExtension("note")  ]  let manager = FileManager.default  for URL in realmURLs {   do {    try manager.removeItem(at: URL)   } catch {    // 處理錯誤   }  }   }}

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到swift教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性xxxx极品hd欧美风情| 色先锋资源久久综合5566| 一区二区国产精品视频| 日韩精品极品视频免费观看| 亚洲国产三级网| 91日韩在线播放| 欧洲精品在线视频| 亚洲欧美国产一本综合首页| 奇门遁甲1982国语版免费观看高清| 亚洲影影院av| 6080yy精品一区二区三区| 国产ts一区二区| 中文字幕日韩欧美在线| 中文字幕日韩av| 亚洲一区二区三区久久| 亚洲人在线观看| 伊人久久五月天| 欧美日韩亚洲一区二区三区| 日韩国产中文字幕| 日韩av在线不卡| 亚洲精品www久久久久久广东| 国产精品视频午夜| 国产精品69久久久久| 国产精品成人国产乱一区| 全亚洲最色的网站在线观看| 亚洲第一区第一页| 日韩黄色高清视频| 国产精品久久久久久久久久尿| 亚洲国产天堂网精品网站| 亚洲三级 欧美三级| 57pao国产精品一区| 欧美性生交xxxxxdddd| 久久青草福利网站| 日韩激情第一页| 91香蕉嫩草神马影院在线观看| 国产精品一区二区久久久| 中文字幕精品在线| 欧美丰满少妇xxxxx做受| 亚洲国产精品久久精品怡红院| 日本高清+成人网在线观看| 性欧美亚洲xxxx乳在线观看| 久久91精品国产91久久久| 精品视频在线导航| 最近2019中文字幕一页二页| 欧美成人中文字幕在线| 日韩一区二区三区xxxx| 久久艳片www.17c.com| 欧美午夜精品久久久久久久| 亚洲国产成人久久综合一区| 欧美老女人www| 欧美日韩一区二区免费在线观看| 欧美精品免费在线观看| 国产精品精品国产| 亚洲直播在线一区| 日韩精品高清在线观看| 亚洲国产高清福利视频| 91在线视频成人| 久久人人爽人人| 欧美日韩福利视频| 国产精品中文久久久久久久| 91久久久久久久久| 国产精品极品美女在线观看免费| 欧美精品一区二区免费| 91精品视频在线播放| 欧洲日韩成人av| 欧美午夜片欧美片在线观看| 亚洲第一页自拍| 91精品国产综合久久久久久久久| 亚洲护士老师的毛茸茸最新章节| 亚洲人在线观看| 2019最新中文字幕| 日韩欧美高清在线视频| 国产精品欧美激情| 国产精品一区电影| 国产成人精品免高潮在线观看| 色老头一区二区三区在线观看| 欧美精品久久久久久久久久| 午夜免费日韩视频| 国产精品福利久久久| 国产久一一精品| 久久久久久久久91| 日韩中文字幕免费视频| 亚洲美女在线看| 欧美午夜精品在线| 综合激情国产一区| 亚洲国产精品热久久| 国产精品成人国产乱一区| 欧美电影在线观看| 黑人精品xxx一区一二区| 久久精品一本久久99精品| 日本一区二区在线免费播放| 日韩免费高清在线观看| 欧美激情精品久久久久久免费印度| 欧美电影第一页| 久久中文字幕在线| 日韩国产欧美精品一区二区三区| 国产精品视频在线观看| 国产69精品久久久久9999| 91在线观看免费高清完整版在线观看| 成人啪啪免费看| 成人在线精品视频| 欧美激情视频一区| 亚洲美女免费精品视频在线观看| 国产亚洲欧美aaaa| 日韩最新在线视频| 国产精品9999| 日韩美女主播视频| 精品欧美激情精品一区| 久久影院中文字幕| 欧美日韩加勒比精品一区| 欧美性猛交xxxx| 欧美精品一区在线播放| 91九色国产在线| 国产成人拍精品视频午夜网站| 国产日韩精品在线| 午夜精品久久久久久久久久久久| 在线电影av不卡网址| 亚洲国产精品va在线| 国产日韩在线视频| 97色在线视频| 亚洲第一中文字幕在线观看| 中国china体内裑精亚洲片| 亚洲精品久久久久久久久久久| 色久欧美在线视频观看| 欧美大尺度激情区在线播放| 色偷偷综合社区| 影音先锋欧美精品| 在线电影中文日韩| 亚洲人成电影网| 国产成人97精品免费看片| 欧美激情va永久在线播放| 久久天天躁夜夜躁狠狠躁2022| 久久久人成影片一区二区三区观看| 欧美一级淫片aaaaaaa视频| 亚洲精品国产精品自产a区红杏吧| 最近2019年日本中文免费字幕| 欧美激情网站在线观看| 国外成人在线视频| 亚洲性日韩精品一区二区| 一区二区欧美久久| 欧美精品在线免费观看| 久久精品国产91精品亚洲| 色先锋资源久久综合5566| 成人妇女免费播放久久久| 2020欧美日韩在线视频| 亚洲第一视频在线观看| 91精品久久久久久久久久久久久| 亚洲乱码国产乱码精品精天堂| 亚洲第一色在线| 久久精品视频播放| 欧美成人免费播放| 疯狂做受xxxx高潮欧美日本| 97在线观看免费高清| 色综合老司机第九色激情| 亚洲欧美一区二区三区情侣bbw| 日韩av在线精品| 久久久久久久久中文字幕| 国产精品久久久av久久久| 欧美激情免费观看| 国产剧情久久久久久| 国产精品久久婷婷六月丁香| 成人午夜一级二级三级| 国内精品久久久久久久| 黄色一区二区三区|