天天看點

iOS中CoreData資料管理系列一——初識CoreData

    coredata是一個專門用來管理資料的架構,其在性能與書寫友善上都有很大的優勢,在資料庫管理方面,apple強烈推薦開發者使用coredata架構,在apple的官方文檔中稱,使用coredata架構可以減少開發者50%——70%的代碼量,這雖然有些誇張,但由此可見,coredata的确十分強大。

    在ios開發中,時常使用sql資料庫對大量的表結構資料進行處理,但是sql有一個十分明顯的缺陷,對于正常資料模型的表,其處理起來是沒問題的,例如一個班級表,其中每條資料中有班級名稱,人數這樣的屬性,一個學生表,其中每條資料有學生的姓名,性别,年齡這樣的屬性。但是如果要在表與表之間建立聯系,自定義對象與自定義對象之間産生從屬關系,使用sql處理起來就十分麻煩了,例如如果這個班級表中有一個班長的屬性,這個屬性是一個學生類型。關于ios中sql的使用相關部落格,位址如下:

    coredata的一大優勢即是其可以友善的在對象之間建立關系。

    使用xcode建立一個工程,在工程中建立一個檔案,選擇core data分類中的datamodel建立,如下圖:

iOS中CoreData資料管理系列一——初識CoreData

這時在xcode的檔案導航區會出現一個以xcdatamodeld為擴充名的檔案,這個檔案就是資料模型檔案,點選add entity按鈕添加一個實體類型,取名為schoolclass,為這個類型添加兩個屬性,分别為名字name和學生數量stunum,如下圖:

iOS中CoreData資料管理系列一——初識CoreData

    在xcode右側的工具欄中可以對實體類型進行一些設定,選中一個實體類型,如下圖:

iOS中CoreData資料管理系列一——初識CoreData

name設定實體類型的名稱,abstract entity設定是否是抽象實體,如果勾選,則此實體不能被示例化,隻能被繼承,類似于抽象類,比如定義人為一個實體類型,在定義繼承于人實體類型的老師、學生等來進行執行個體化。parent entity用來選擇父類實體,class用于設定對應的類的。

    再建立一個學生類實體student,添加name和age兩個屬性。選中schoolclass,在其中的relationships子產品中點選+号,來添加一個關系,如下圖:

iOS中CoreData資料管理系列一——初識CoreData

這時,schoolclass實體類型中就有了一個student類型的班長屬性。如果切換一下編輯風格,可以更加清晰的看到實體類型之間的關系,如下圖:

iOS中CoreData資料管理系列一——初識CoreData

    選中一個屬性或者關系,在右側的工具欄中可以對屬性進行一些設定,如下圖:

iOS中CoreData資料管理系列一——初識CoreData

name設定屬性的名字,optional類型代表可選,即在執行個體化對象時可以指派也可以不指派。attribute設定屬性的資料類型,default value設定資料的預設值。