免費開源的iOS開發學習平臺

                                                Core Data入門:1-概念簡介

                                                Core Data是蘋果官方提供的管理數據層對象的框架,它提供了對象-關系映射(ORM)的功能,即能夠將Objective-C對象轉化成數據,保存在SQLite數據庫文件中,也能夠將保存在數據庫中的數據還原成Objective-C對象。在此數據操作期間,我們不需要編寫任何SQL語句。Core Data針對對象生命周期,以及持久化的對象圖管理(object graph management)中的一些常見問題,提供了解決方案。Core Data的主要任務是負責數據更改的管理、序列化到磁盤、最小化內存占用以及查詢數據。CoreData通常能有效減少50%-70%模型層的代碼量。

                                                Core Data中的術語

                                                在學習Core Data之前,需要提前掌握下面幾個術語:

                                                • 實體: 在Core Data中定義的類。在關系型數據庫中,一個實體對應于一張表。最經典的例子是雇員和公司。
                                                • 屬性:實體的一部分信息。比如,一個雇員實體有名字屬性,職位屬性,工資屬性。在數據庫中一個屬性對應于表中的一個字段。
                                                • 關系:多個實體間的鏈接。在Core Data里兩個實體的關系稱為一對一關系。一個和多個實體的關系稱為一對多的關系。比如一個經理和雇員有一對多的關系,一個經理管理著多個雇員,而一個雇員只會有一個經理。

                                                Core Data中的核心類

                                                • NSManagedObjectModel:管理對象模型,用于描述應用程序的數據模型,這個模型包含實體(Entity)、特性(Property)、讀取請求(Fetch Request)等。Core Data默認使用SQLite數據庫作為存儲源,因此你可以把數據類型當成數據庫的表結構。

                                                • NSManagedObjectContext:管理對象上下文,參與對數據對象進行各種操作的全過程,并監測數據對象的變化,以提供對 undo/redo 的支持及更新綁定到數據的 UI。

                                                • NSPersistentContainer:相當于數據文件管理器,處理底層的對數據文件的讀取與寫入。一般我們無需與它打交道。

                                                Core Data中的常用方法

                                                對于Core Data的操作,與SQLite類似,主要就是涉及數據的增刪改查相關操作。由于Core Data中定義的API眾多,對于初學者來說,可以預先掌握如下幾個常用的方法。

                                                • 實例化一個管理對象。在Core Data中管理的都是NSManagedObject對象,在NSManagedObject.h中也提供了用于創建NSManagedObject對象的方法
                                                - (__kindof NSManagedObject*)initWithEntity:(NSEntityDescription *)entity insertIntoManagedObjectContext:(nullable NSManagedObjectContext *)context;
                                                
                                                • 執行查詢請求。在NSManagedObjectContext類中,提供了用于查詢的方法,在該方法中,需要傳遞一個NSFetchRequest類型的參數作為查詢請求,該參數中包含了查詢條件等相關信息
                                                - (nullable NSArray *)executeFetchRequest:(NSFetchRequest *)request error:(NSError **)error;
                                                
                                                • 查詢條件的設置。在Core Data中,不需要編寫SQL語句,但提供了NSFetchRequest類,在該類中,我們可以設置相關的查詢條件,包括需要查詢的對象、結果的排序方式(NSSortDescriptor類)以及查詢條件(NSPredicate類)。由此可見,Core Data的使用更加地面向對象。
                                                + (instancetype)fetchRequestWithEntityName:(NSString*)entityName; 
                                                @property (nullable, nonatomic, strong) NSArray<NSSortDescriptor *> *sortDescriptors;
                                                @property (nullable, nonatomic, strong) NSPredicate *predicate;
                                                
                                                • 插入與刪除對象。在NSManagedObjectContext類中,提供了用于針對NSManagedObject類對象的插入以及刪除方法,利用這些方法我們就不再需要編寫INSERT語句以及DELETE語句了。
                                                - (void)insertObject:(NSManagedObject *)object;
                                                - (void)deleteObject:(NSManagedObject *)object;
                                                

                                                欧美超级精品一级A片|欧美一级黄色视频|国产精品自在在线午夜免费|4444亚洲人成无码网在线观看|亚洲ⅴa曰本va欧美va视频