Integrating Core Data and Storyboards

Core Data很好的整合了Xcode的Strroyboards的功能知市,你可以用它來創(chuàng)建UI襟士。這種集成允許你利用依賴注入模式(dependency injection)。依賴注入是一個(gè)控件的反轉(zhuǎn);它允許框架使用者通過引用傳遞到調(diào)用對(duì)象來控制流妇汗。依賴注入模式(dependency injection)是用于Cocoa開發(fā)的首選模式之一,尤其是iOS Cocoa的開發(fā)说莫。

Integrating Core Data with a Storyboard Segue

Core Data和Storyboard一個(gè)復(fù)雜的集成點(diǎn)是:表格視圖中顯示大量的數(shù)據(jù)對(duì)象過度到介紹其中一個(gè)項(xiàng)目細(xì)節(jié)的子視圖控制器杨箭。不使用Storyboard時(shí),是通過重寫表格視圖代理(UITableViewDelegate)的tableView:didSelectRowAtIndexPath:的方法實(shí)現(xiàn)储狭。然而在Storyboard里互婿,這種方法不應(yīng)該不使用捣郊,過度的處理應(yīng)該在 prepareForSegue:sender:的方法里實(shí)現(xiàn)。

下面是演示如何將Core Data和Storyboard segue集成慈参,組主視圖控制器是一個(gè)員工的表格名單呛牲,單選中一個(gè)表格中其中一個(gè)員工時(shí),會(huì)跳轉(zhuǎn)呈現(xiàn)出一個(gè)員工詳細(xì)的信息視圖驮配。這里假設(shè)視圖控制器在segue里面有接收選擇的屬性娘扩。

Objective-C
@interface DetailViewController : UIViewController
 
@property (weak) AAAEmployeeMO *employee;
 
@end
Swift
class DetailViewController: UIViewController {
    
    weak var employee: EmployeeMO?
    
}

注:
在應(yīng)用程序里無論那里通過NSManagedObject時(shí),使用弱引用(weak)聲明他們壮锻。當(dāng)NSManagedObject被刪除并且留下一個(gè)懸掛引用一個(gè)不存在的對(duì)象時(shí)琐旁,有助于保護(hù)視圖控制器(view controller)。當(dāng)屬性(property)聲明為弱引用(weak)時(shí)猜绣,并且對(duì)象被刪除時(shí)灰殴,它將自動(dòng)設(shè)置為nil。

下一步掰邢,在主視圖控制器的prepareforsegue:方法中牺陶,通過適當(dāng)?shù)腘SManagedObject實(shí)例,然后實(shí)現(xiàn)方法尸变。

Objective-C
#define CellDetailIdentifier @"CellDetailIdentifier"
 
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    id destination = [segue destinationViewController];
    if ([[segue identifier] isEqualToString:CellDetailIdentifier]) {
        NSIndexPath *indexPath = [[self tableView] indexPathForSelectedRow];
        id selectedObject = [[self fetchedResultsController] objectAtIndexPath:indexPath];
        [destination setEmployee:selectedObject];
        return;
    }
}
Swift
let CellDetailIdentifier = "CellDetailIdentifier"
 
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    switch segue.identifier! {
    case CellDetailIdentifier:
        let destination = segue.destinationViewController as! DetailViewController
        let indexPath = tableView.indexPathForSelectedRow!
        let selectedObject = fetchedResultsController.objectAtIndexPath(indexPath) as! EmployeeMO
        destination.employee = selectedObject
    default:
        print("Unknown segue: \(segue.identifier)")
    }
}

在segue檢索過segue的標(biāo)識(shí)符(需要在storyboard中的每個(gè)segue都是獨(dú)特的)后义图,就可以安全的取得目標(biāo)(destination)視圖控制器(view Controller),并將選中的員工實(shí)例的引用傳遞給目標(biāo)(destination)視圖控制器(view Controller)召烂。然后碱工,目標(biāo)(destination)視圖控制器(view Controller)在其生命周期的加載部分有可用的數(shù)據(jù)引用,并顯示其相關(guān)的數(shù)據(jù)奏夫。這是依賴注入(dependency injection)怕篷,父視圖控制器決定將哪一個(gè)員工實(shí)例交給目標(biāo)(destination)視圖控制器(view Controller)來控制應(yīng)用程序的流程。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末酗昼,一起剝皮案震驚了整個(gè)濱河市廊谓,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌麻削,老刑警劉巖蒸痹,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異呛哟,居然都是意外死亡叠荠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門扫责,熙熙樓的掌柜王于貴愁眉苦臉地迎上來榛鼎,“玉大人,你說我怎么就攤上這事≌哂椋” “怎么了抡笼?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長黄鳍。 經(jīng)常有香客問我推姻,道長,這世上最難降的妖魔是什么际起? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任拾碌,我火速辦了婚禮,結(jié)果婚禮上街望,老公的妹妹穿的比我還像新娘。我一直安慰自己弟跑,他們只是感情好灾前,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孟辑,像睡著了一般哎甲。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饲嗽,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天炭玫,我揣著相機(jī)與錄音,去河邊找鬼貌虾。 笑死吞加,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尽狠。 我是一名探鬼主播衔憨,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼袄膏!你這毒婦竟也來了践图?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤沉馆,失蹤者是張志新(化名)和其女友劉穎码党,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體斥黑,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡揖盘,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了心赶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扣讼。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖缨叫,靈堂內(nèi)的尸體忽然破棺而出椭符,到底是詐尸還是另有隱情荔燎,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布销钝,位于F島的核電站有咨,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蒸健。R本人自食惡果不足惜座享,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望似忧。 院中可真熱鬧渣叛,春花似錦、人聲如沸盯捌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饺著。三九已至箫攀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間幼衰,已是汗流浹背靴跛。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留渡嚣,地道東北人梢睛。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像严拒,于是被迫代替她去往敵國和親扬绪。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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

  • 翻譯自“View Controller Programming Guide for iOS”裤唠。 1 彈出視圖控制器...
    lakerszhy閱讀 3,547評(píng)論 2 20
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫挤牛、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,120評(píng)論 4 61
  • 在這本書中种蘸,您一直在使用自動(dòng)布局來創(chuàng)建靈活的界面墓赴,可以跨設(shè)備類型和大小進(jìn)行擴(kuò)展。 自動(dòng)布局是一種非常強(qiáng)大的技術(shù)航瞭,但...
    titvax閱讀 830評(píng)論 0 1
  • 紅日初升诫硕,其道大光。河出伏流刊侯,一瀉汪洋章办。潛龍騰淵,鱗爪飛揚(yáng)。 你淪陷在愛情的旋渦時(shí)藕届,便沒了世界挪蹭。一朵白玫瑰灰塵滿滿...
    魚不香沒肉絲閱讀 171評(píng)論 0 0
  • 先恭喜我終于搬家啦!首先真的很感謝大家的支持休偶,我在后臺(tái)評(píng)論看到不少朋友的留言梁厉,真的讓我幸福感爆棚啊踏兜!原來你們都記得...
    Denise0112閱讀 211評(píng)論 0 0