CoreData.framework :iOS中提供了對原始SQLite數(shù)據(jù)庫API訪問的封裝,通過這個framework來管理數(shù)據(jù)緩存和持久數(shù)據(jù)要比使用SQL語句操作SQLite數(shù)據(jù)庫簡單和方便許多。
機制:通過framework來存儲和查詢數(shù)據(jù)只需要使用framework提供的類就可以,你可以完全使用對象的形式來管理你的數(shù)據(jù)以及數(shù)據(jù)之間的關(guān)系,framework已經(jīng)很好地將數(shù)據(jù)庫表和字段封裝成了對象和屬性,表之間的一對多、多對多關(guān)系則封裝成了對象之間的包含關(guān)系.
通過 relationship 來表示:
一對多時:設(shè)置為 properties 項選中 Optional, Plural 選項 To-Many Relationship 選中;
多對一反向關(guān)系時:properties 項選中 Optional,Count 項選中Minimun 和 Maximun 并分別設(shè)置其值為1;
Core Data 特點:
1)Core Data的強大之處就在于這種關(guān)系可以在一個對象更新時,其關(guān)聯(lián)的對象也會隨著更新,相當于你更新一張表的時候,其關(guān)聯(lián)的其他表也會隨著更新。
2)Core Data的另外一個特點就是提供了更簡單的性能管理機制,例如,使用NSFetchedResultsController類,你不用使用SQL的Limit而是使用NSFetchRequest類的setFetchBatchSize()就可以限制查詢記錄的總數(shù),而NSFetchedResultsController類神奇的地方在于需要獲取更多記錄的時候,這個類會自動更新其緩存。
3)對于多表查詢上相對來說,CoreData沒有 SQL 直觀,但CoreData的功能還是可以完成相關(guān)操作的。
但是對于類似外連接,左連接等操作,在CoreData中就顯得無力。