日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

14-CoreData兼容iOS9和iOS10

發布時間:2024/9/30 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 14-CoreData兼容iOS9和iOS10 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 由于iOS10之后CoreData Stack的更改無法在iOS9的系統中運行,所以我們需要對上一小節中封裝的工具類進行系統版本的兼容

  • iOS9和iOS10中CoreData最本質的區別其實就是管理對象上下文

    • iOS9中NSManagedObjectContext需要我們手動創建
    • iOS10中由NSPersistentContainer自動生成
  • HMCoreDataManager.h

#import <Foundation/Foundation.h> #import <CoreData/CoreData.h>#define kHMCoreDataManager [HMCoreDataManager shareInstance]@interface HMCoreDataManager : NSObject//單利類 +(HMCoreDataManager*)shareInstance;//保存到數據庫 - (void)save;//管理對象上下文 //這里聲明為readonly的目的主要是重寫get方法使其成為計算型屬性 @property(nonatomic,strong,readonly)NSManagedObjectContext *managedObjectContext;//通過方法返回iOS10的NSPersistentContainer //如果是iOS9,則返回nil //該方法的目的主要是便于使用ios10的多線程操作數據庫 - (NSPersistentContainer *)getCurrentPersistentContainer;@end
  • HMCoreDataManager.m
#import "HMCoreDataManager.h" #import <UIKit/UIKit.h>@interface HMCoreDataManager ()//iOS9中 CoreData Stack核心的三個類 //管理模型文件上下文 @property(nonatomic,strong)NSManagedObjectContext *managedObjectContext1; //模型文件 @property(nonatomic,strong)NSManagedObjectModel *managedObjectModel; //存儲調度器 @property(nonatomic,strong)NSPersistentStoreCoordinator *persistentStoreCoordinator;//iOS10中NSPersistentContainer /**CoreData Stack容器內部包含:管理對象上下文:NSManagedObjectContext *viewContext;對象管理模型:NSManagedObjectModel *managedObjectModel存儲調度器:NSPersistentStoreCoordinator *persistentStoreCoordinator;*/ @property(nonatomic,strong)NSPersistentContainer *persistentContainer;@end@implementation HMCoreDataManager+ (HMCoreDataManager *)shareInstance {static HMCoreDataManager *manager = nil;static dispatch_once_t onceToken;dispatch_once(&onceToken, ^{manager = [[HMCoreDataManager alloc] init];});return manager; }#pragma mark -iOS9 CoreData Stack//獲取沙盒路徑URL -(NSURL*)getDocumentsUrl {return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] firstObject]; }//懶加載managedObjectModel - (NSManagedObjectModel *)managedObjectModel {if (_managedObjectModel != nil) {return _managedObjectModel;}// //根據某個模型文件路徑創建模型文件// _managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:[[NSBundle mainBundle]URLForResource:@"Person" withExtension:@"momd"]];//合并Bundle所有.momd文件//budles: 指定為nil,自動從mainBundle里找所有.momd文件_managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil];return _managedObjectModel;}//懶加載persistentStoreCoordinator -(NSPersistentStoreCoordinator*)persistentStoreCoordinator {if (_persistentStoreCoordinator != nil) {return _persistentStoreCoordinator;}//根據模型文件創建存儲調度器_persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];/*** 給存儲調度器添加存儲器** tyep:存儲類型* configuration:配置信息 一般為nil* options:屬性信息 一般為nil* URL:存儲文件路徑*/NSURL *url = [[self getDocumentsUrl] URLByAppendingPathComponent:@"person.db" isDirectory:YES];[_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:url options:nil error:nil];NSLog(@"%@",_persistentStoreCoordinator.persistentStores[0].URL);return _persistentStoreCoordinator;}//懶加載managedObjectContext -(NSManagedObjectContext*)managedObjectContext1 {if (_managedObjectContext1 != nil) {return _managedObjectContext1;}//參數表示線程類型 NSPrivateQueueConcurrencyType比NSMainQueueConcurrencyType略有延遲_managedObjectContext1 = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];//設置存儲調度器[_managedObjectContext1 setPersistentStoreCoordinator:self.persistentStoreCoordinator];return _managedObjectContext1; }#pragma mark -iOS10 CoreData Stack//懶加載NSPersistentContainer - (NSPersistentContainer *)persistentContainer {if(_persistentContainer != nil){return _persistentContainer;}//1.創建對象管理模型// //根據某個模型文件路徑創建模型文件 // NSManagedObjectModel *model = [[NSManagedObjectModel alloc] initWithContentsOfURL:[[NSBundle mainBundle]URLForResource:@"Person" withExtension:@"momd"]];//合并Bundle所有.momd文件//budles: 指定為nil,自動從mainBundle里找所有.momd文件NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];//2.創建NSPersistentContainer/*** name:數據庫文件名稱*/_persistentContainer = [[NSPersistentContainer alloc] initWithName:@"sql.db" managedObjectModel:model];//3.加載存儲器[_persistentContainer loadPersistentStoresWithCompletionHandler:^(NSPersistentStoreDescription * description, NSError * error) {NSLog(@"%@",description);NSLog(@"%@",error);}];return _persistentContainer; }#pragma mark - NSManagedObjectContext//重寫get方法 - (NSManagedObjectContext *)managedObjectContext {//獲取系統版本float systemNum = [[UIDevice currentDevice].systemVersion floatValue];//根據系統版本返回不同的NSManagedObjectContextif(systemNum < 10.0){return kHMCoreDataManager.managedObjectContext1;}else{return kHMCoreDataManager.persistentContainer.viewContext;} }- (NSPersistentContainer *)getCurrentPersistentContainer {//獲取系統版本float systemNum = [[UIDevice currentDevice].systemVersion floatValue];//根據系統版本返回不同的NSManagedObjectContextif(systemNum < 10.0){return nil;}else{return kHMCoreDataManager.persistentContainer;} }- (void)save {NSError *error = nil;[kHMCoreDataManager.managedObjectContext save:&error];if (error == nil) {NSLog(@"保存到數據庫成功");}else{NSLog(@"保存到數據庫失敗:%@",error);} }@end

總結

以上是生活随笔為你收集整理的14-CoreData兼容iOS9和iOS10的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 男人插入女人下面视频 | 成人在线免费网址 | 波多野结衣之双调教hd | 亚洲成人资源 | 精品三级在线观看 | 黄色片网站在线免费观看 | 亚洲一级Av无码毛片久久精品 | 18视频在线观看网站 | 欧美情趣视频 | 婷综合 | 日本中文字幕网站 | 老公吃小头头视频免费观看 | xxx毛片 | 夜夜夜综合 | 男女黄色片 | 91av在线免费视频 | 成人一二三区 | 福利社午夜影院 | 国产一级片网址 | 91精品久 | 香蕉91视频| 中文字幕二区在线观看 | 亚洲欧美日韩国产成人精品影院 | 福利资源导航 | 在线免费观看日韩 | 国产精品77| 激情网五月 | 精品人妻二区中文字幕 | 禁漫天堂黄漫画无遮挡观看 | 尹人久久| 午夜影院在线 | 吻胸摸激情床激烈视频大胸 | 欧美一区二区三区久久 | 国产日韩欧美视频在线 | 亚洲美女免费视频 | 国产免费一区二区 | 三a大片| 免费黄色在线看 | 寻找身体恐怖电影免费播放 | 综合激情久久 | 日韩精品第一区 | 欧美在线免费观看 | 亚洲高清网 | 亚洲精品五月 | 男人操女人网站 | 国产九九精品视频 | 亚洲第一免费播放区 | www.97av| 91国偷自产中文字幕久久 | 国产免费黄色片 | 午夜精品在线观看 | 色婷婷色婷婷 | 午夜神马影院 | 在线中文天堂 | 在线无码va中文字幕无码 | 国产一级片免费视频 | 亚洲啪啪免费视频 | 97干干 | 日韩午夜小视频 | 欧美xxxxx精品 | 内地级a艳片高清免费播放 91在线精品一区二区 | 国产精品有限公司 | 国产麻豆91| 欧美久久视频 | 中文字幕电影av | 女生张开腿给男生桶 | 天天插日日插 | 海量av| 国产精品久久久久久一区二区 | 浪漫樱花在线观看高清动漫 | 亚洲成人三区 | 一区二区三区入口 | 致命弯道8在线观看免费高清完整 | 成人午夜视频免费 | 国产三级精品三级在线 | 欧美专区在线视频 | 亚洲最大免费视频 | 日本高清一区二区视频 | 国产高清av在线 | 久久婷婷网站 | 日韩精品一区二区三区色欲av | 尤物影院在线观看 | 蜜乳av中文字幕 | 免费无遮挡无码永久在线观看视频 | 久操久热 | 欧美日韩国产中文 | 亚洲欧美第一页 | 动漫美女露胸网站 | 色七七在线 | 久久精品aaaaaa毛片 | 国产福利一区二区三区 | 中文字幕免费在线看线人 | 国产成人精品久久二区二区91 | 欧美另类在线播放 | 国产精品一区二区无码对白 | 亚洲黄色中文字幕 | 久久视频在线看 | 午夜视频在线 | 久久久精品国产sm调教 |