在建立專案過程時,請選中乙個標籤為use core data的核取方塊
專案導航面板中,有乙個名為core_data_persistence.xcdatamodeld的檔案,在這裡面會有乙個資料模型編輯器。它代替了使用**建立nsobject的子類並讓其遵循nscoding和nscopying的傳統方式。而是現在資料模型編輯器中建立一些實體(entity),然後再**中為這些實體建立託管物件(managed object)。
注意:「實體」表示對物件的描述,而「託管物件」表示在執行時建立的該實體的具體例項。
實體有屬性(property)組成:attribute、relationship、fetched property
鍵—值編碼
我們的**中不在使用訪問方法和修改方法,而是使用鍵—值編碼來設定屬性或檢索它們的已有值。在操作託管物件,用於設定和檢索屬性值的鍵就是希望設定的特性的名稱。因此,要從託管物件中檢索儲存在name特性中的值或者要為託管物件的屬性設定新值,需要呼叫一下方法
nsstring *name = [mymanagedobject valueforkey:@"name"];
[mymanagedobject setcvalue:@"abc"
forkey:@"name"];
在上下文中結合
這些託管物件位於持久儲存中,有時也稱為支援儲存(backing store)。預設情況下,core data應用將支援儲存實現為儲存在應用documents目錄中的sqlite資料庫。期間的相關訪問操作都將由core data完成。除了sqlite之外,支援儲存還可以作為二進位制檔案實現,甚至以xml形式儲存。
出了建立它之外,我們不會直接操作持久儲存,而是使用所謂的託管物件上下文。上下文協調對持久儲存的訪問,同時儲存自上次儲存物件以來修改過的屬性資訊。上下文還能通過撤銷管理器來註冊所有更改,這意味著你可以撤銷單個操作或會滾到上次儲存的資料。
建立新的託管物件
nsmanagedobject *thing = [nsentitydescription insertnewobjectforentityforname:@"thing"
inmanagedobjectcontext:context];
獲取託管物件
nsfetchrequest *request = [[nsfetchrequest alloc] init];
nsentitydescription *entitydescr = [nsentitydescription entityforname:@"thing"
inmanagedobjectcontext:context];
[request setentity:entitydescr];
也可以使用nspredicate類為獲取請求指定條件
nspredicate *pred = [nspredicate predicatewithformat:@"(name = %@)",namestring];
[request setpredicate:pred];
建立了獲取請求並為它提供實體描述之後,使用nsmanagedobjectcontext中的例項方法來執行請求:
nserror *error;
nsarray *objexts = [context executefetchrequest:request error:&error];
if(objects == nil)
iOS MBProgressHUD的基本使用
方式1.直接在view上show hud mbprogresshud showhudaddedto self.view animated yes retain hud.delegate self 常用的設定 小矩形的背景色 hud.color uicolor clearcolor 這兒表示無背景 顯...
scanf gets getchar的基本使用
scanf 是在c語言中最常用的輸入函式,它需要我們嚴格按照要求進行輸入,除非你用對scanf 使用了正規表示式 對於scanf 當它遇到空格 回車 或者tab鍵時,都會自動停止輸入,剩下的內容逗留在緩衝區中,所以如果需要輸入字串,不推薦使用它。關於正規表示式 是個集合的標誌,特指讀入此集合所限定的...
PHP Elasticsearch的基本使用方法
一 連線elasticsearch 1 elasticsearch開啟之後,可以直接通過檢視基本資訊。2 將composer vendor下的檔案複製到ot thinkphp library vendor elasticsearch目錄下。3 連線elasticsearch,public es 初始...