1.3 創(chuàng)建和保存NSManagedObject (Core Data Programming Guide翻譯)

這是蘋果官方文檔 Core Data Programming Guide 的渣翻譯交惯。

當(dāng)你在應(yīng)用中定義了托管對(duì)象模型(MOM)并初始化了Core Data棧孩灯,你就可以開始創(chuàng)建數(shù)據(jù)存儲(chǔ)對(duì)象了哈误。

創(chuàng)建托管對(duì)象(MO)

一個(gè)NSManagedObject實(shí)例實(shí)現(xiàn)了基本的Core Data模型對(duì)象的需求卫枝。MO實(shí)例需要兩個(gè)要素:一個(gè)Entity描述(一個(gè)NSEntityDescription實(shí)例)苦锨,和一個(gè)托管對(duì)象上下文(一個(gè)NSManagedObjectContext實(shí)例)廉嚼。Entity描述包含類代表的Entity的名字矗烛、字段和關(guān)系辅柴。MOC代表了一個(gè)你用來創(chuàng)建MO的草稿板。MOC能跟蹤修改和對(duì)象之間的關(guān)系瞭吃。

在這個(gè)例子中碌嘀,NSEntityDescription類有一個(gè)類方法,這個(gè)方法接收一個(gè)string座位Entity的名字歪架、一個(gè)MO綁定的MOC的引用股冗。這個(gè)例子定義了返回對(duì)象為AAAEmployeeMO對(duì)象。

OBJECTIVE-C

AAAEmployeeMO *employee = [NSEntityDescription insertNewObjectForEntityForName:@"Employee" inManagedObjectContext:[self managedObjectContext];

SWIFT

let employee = NSEntityDescription.insertNewObjectForEntityForName("Employee", inManagedObjectContext: self.managedObjectContext) as! AAAEmployeeM

創(chuàng)建NSManagedObject的子類

默認(rèn)Core Data會(huì)返回NSManagedObject實(shí)例給你的應(yīng)用和蚪。但是如果為每個(gè)模型中的Entity定義一個(gè)NSManagedObject無疑是更有用的止状。特別是當(dāng)你創(chuàng)建了一個(gè)NSManagedObject的子類烹棉,可以利用代碼自動(dòng)完成來更好地調(diào)用屬性和方法。

在Xcode的Core Data編輯器中創(chuàng)建一個(gè)NSManagedObject的子類怯疤,在數(shù)據(jù)模型配置器的Entity編輯框峦耘,選擇一個(gè)Entity,輸入類名旅薄,這樣就完成了創(chuàng)建辅髓。

OBJECTIVE-C

#import <CoreData/CoreData.h>
 
@interface AAAEmployeeMO : NSManagedObject
 
@property (nonatomic, strong) NSString *name;
 
@end
 
@implementation AAAEmployeeMO
 
@dynamic name;
 
@end

SWIFT

import UIKit
import CoreData
import Foundation
 
class AAAEmployeeMO: NSManagedObject {
    
    @NSManaged var name: String?
    
}

@dynamic標(biāo)簽通知編譯器這個(gè)變量會(huì)在運(yùn)行時(shí)再進(jìn)行解析。

當(dāng)這個(gè)子類在數(shù)據(jù)模型定義了并添加到了應(yīng)用中少梁,你就可以直接在應(yīng)用中引用洛口,提升你應(yīng)用代碼的可讀性。

保存NSManagedObject實(shí)例

NSManagedObject實(shí)例的創(chuàng)建不能持久化凯沪。當(dāng)你在MOC中創(chuàng)建了一個(gè)MO第焰,你必須保存這個(gè)修改到持久化存儲(chǔ)中。

OBJECTIVE-C

NSError *error = nil;
if ([[self managedObjectContext] save:&error] == NO) {
    NSAssert(NO, @"Error saving context: %@\n%@", [error localizedDescription], [error userInfo]);
}

SWIFT

do {
    try managedObjectContext.save()
} catch {
    fatalError("Failure to save context: \(error)")
}

NSManagedObjectContext上save操作的調(diào)用接收一個(gè)NSError變量妨马,無論是成功還是失敗都會(huì)返回挺举。如果保存失敗,為了能糾正烘跺,能夠顯示出錯(cuò)誤原因是十分重要的湘纵。錯(cuò)誤原因的顯示可以輸出到控制臺(tái)或者顯示給用戶。如果保存方法返回成功滤淳,這個(gè)錯(cuò)誤變量不需要進(jìn)行考慮梧喷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市脖咐,隨后出現(xiàn)的幾起案子铺敌,更是在濱河造成了極大的恐慌,老刑警劉巖屁擅,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件偿凭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡派歌,警方通過查閱死者的電腦和手機(jī)弯囊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來硝皂,“玉大人常挚,你說我怎么就攤上這事』铮” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵折欠,是天一觀的道長贝或。 經(jīng)常有香客問我吼过,道長,這世上最難降的妖魔是什么咪奖? 我笑而不...
    開封第一講書人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任盗忱,我火速辦了婚禮,結(jié)果婚禮上羊赵,老公的妹妹穿的比我還像新娘趟佃。我一直安慰自己,他們只是感情好昧捷,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開白布闲昭。 她就那樣靜靜地躺著,像睡著了一般靡挥。 火紅的嫁衣襯著肌膚如雪序矩。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評(píng)論 1 290
  • 那天跋破,我揣著相機(jī)與錄音簸淀,去河邊找鬼。 笑死毒返,一個(gè)胖子當(dāng)著我的面吹牛租幕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拧簸,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼令蛉,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了狡恬?” 一聲冷哼從身側(cè)響起珠叔,我...
    開封第一講書人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎弟劲,沒想到半個(gè)月后祷安,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡兔乞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年汇鞭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庸追。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霍骄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出淡溯,到底是詐尸還是另有隱情读整,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布咱娶,位于F島的核電站米间,受9級(jí)特大地震影響强品,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屈糊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一的榛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逻锐,春花似錦夫晌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至鳄哭,卻和暖如春要糊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背妆丘。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來泰國打工锄俄, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人勺拣。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓奶赠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親药有。 傳聞我的和親對(duì)象是個(gè)殘疾皇子毅戈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容