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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

10-NSPersistentContainer介绍

發布時間:2024/9/30 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 10-NSPersistentContainer介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 以下內容,主要根據本人多年開發經驗翻譯自蘋果官方文檔https://developer.apple.com/reference/coredata/nspersistentcontainer?language=objc

  • 1.NSPersistentContainer

    • NSPersistentContainer是一個容器,封裝了應用程序中的CoreData Stack(核心數據棧堆)
  • 2.概述

    • NSPersistentContainer簡化了創建和管理的核心堆棧的數據處理創建NSManagedObjectModel,NSPersistentStoreCoordinator,NSManagedObjectContext
  • 3.API介紹

  • 實例化

/**類方法創建NSPersistentContainer * name:表示保存的數據庫文件名稱 * 使用此方法創建NSPersistentContainer,默認模型文件名稱為name */ + (instancetype)persistentContainerWithName:(NSString *)name; /**類方法創建NSPersistentContainer * name:表示保存的數據庫文件名稱 * model:對象管理模型 */ + (instancetype)persistentContainerWithName:(NSString *)name managedObjectModel:(NSManagedObjectModel *)model//以下兩個為實例方法,使用和參數同上 - (instancetype)initWithName:(NSString *)name;- (instancetype)initWithName:(NSString *)name managedObjectModel:(NSManagedObjectModel *)model
  • 屬性信息
//返回沙盒中存儲數據庫的文件夾URL路徑,這是一個靜態方法,表示數據庫的文件夾路徑是唯一的,并且奇妙的是:這個文件夾是動態創建的(Library->Application Support) + (NSURL *)defaultDirectoryURL; //只讀屬性,當前NSPersistentContainer容器的名稱 @property (copy, readonly) NSString *name; //只讀屬性,自動生成的管理對象上下文,這個上下文默認的操作類型是NSMainQueueConcurrencyType主線程 @property (strong, readonly) NSManagedObjectContext *viewContext; //只讀屬性,對象管理模型 @property (strong, readonly) NSManagedObjectModel *managedObjectModel; //只讀屬性,存儲調度器 @property (strong, readonly) NSPersistentStoreCoordinator *persistentStoreCoordinator; //存儲器描述數組),內部進行了copy處理,無需擔心內存安全 @property (copy) NSArray<NSPersistentStoreDescription *> *persistentStoreDescriptions;
  • 配置信息
//加載存儲器,此方法必須要調用,否則無法存儲數據 //block中NSPersistentStoreDescription用于描述生成的存儲器信息,如:數據庫文件路徑、存儲類型等 NSError用于描述加載存儲器是否成功或失敗信息 - (void)loadPersistentStoresWithCompletionHandler:(void (^)(NSPersistentStoreDescription *, NSError * _Nullable))block;//返回一個基于多線程的管理對象上下文,我們無需關心多線程的內部實現以及線程安全,由NSPersistentContainer新創建一個 //此方法非常牛逼,調用這個方法之后,對返回的上下文做一些數據的處理都是在子線程中完成的,可以用于處理對數據庫進行大量數據操作的場景 - (NSManagedObjectContext *)newBackgroundContext NS_RETURNS_RETAINED;//使用存儲調度器快速在多線程中操作數據庫,效率非常高(比主線程操作塊50倍!!!) - (void)performBackgroundTask:(void (^)(NSManagedObjectContext *))block;
  • 想了解iOS10之后CoreData性能提升以及多線程操作coredata的可以參考我的這篇博客http://blog.csdn.net/u013263917/article/details/53277863

總結

以上是生活随笔為你收集整理的10-NSPersistentContainer介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

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