第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

每個(gè)核心數(shù)據(jù)關(guān)系都必須有反向嗎?

每個(gè)核心數(shù)據(jù)關(guān)系都必須有反向嗎?

哈士奇WWW 2019-08-27 11:09:43
每個(gè)核心數(shù)據(jù)關(guān)系都必須有反向嗎?假設(shè)我有兩個(gè)實(shí)體類:SocialApp和SocialAppType在SocialApp我有一個(gè)屬性:appURL和一個(gè)關(guān)系:type。在SocialAppType我有三個(gè)屬性:baseURL,name和favicon。SocialApp關(guān)系的目的地type是單個(gè)記錄SocialAppType。例如,對(duì)于多個(gè)Flickr帳戶,會(huì)有許多SocialApp記錄,每條記錄都包含指向某個(gè)人帳戶的鏈接。會(huì)有一個(gè)SocialAppType針對(duì)“Flickr的”類型的記錄,所有SocialApp記錄將指向。當(dāng)我使用這個(gè)模式構(gòu)建一個(gè)應(yīng)用程序時(shí),我得到一個(gè)警告,即SocialAppType和之間沒(méi)有反比關(guān)系SocialApp。 /Users/username/Developer/objc/TestApp/TestApp.xcdatamodel:SocialApp.type: warning: SocialApp.type -- relationship does not have an inverse我需要反轉(zhuǎn),為什么?
查看完整描述

3 回答

?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

在實(shí)踐中,由于沒(méi)有反向,我沒(méi)有任何數(shù)據(jù)丟失 - 至少我知道。谷歌快速建議你應(yīng)該使用它們:

反向關(guān)系不僅使事情更加整潔,它實(shí)際上被Core Data用于維護(hù)數(shù)據(jù)完整性。

Cocoa Dev Central

您通常應(yīng)該在兩個(gè)方向上建模關(guān)系,并適當(dāng)?shù)刂付ǚ聪蜿P(guān)系。如果進(jìn)行了更改,Core Data會(huì)使用此信息來(lái)確保對(duì)象圖的一致性(請(qǐng)參閱“操作關(guān)系和對(duì)象圖完整性”)。有關(guān)您可能不想在兩個(gè)方向上建模關(guān)系的一些原因的討論,以及可能出現(xiàn)的一些問(wèn)題,請(qǐng)參閱“單向關(guān)系”。

核心數(shù)據(jù)編程指南


查看完整回答
反對(duì) 回復(fù) 2019-08-27
?
梵蒂岡之花

TA貢獻(xiàn)1900條經(jīng)驗(yàn) 獲得超5個(gè)贊

Apple文檔有一個(gè)很好的例子,表明你可能因?yàn)闆](méi)有反向關(guān)系而遇到問(wèn)題。讓我們把它映射到這種情況。


假設(shè)您將其建模如下: 在此輸入圖像描述


注意:您有一個(gè)到一個(gè)所謂的“關(guān)系型 ”,從SocialApp到SocialAppType。該關(guān)系是非可選的,并且具有“拒絕”刪除規(guī)則。


現(xiàn)在考慮以下內(nèi)容:


SocialApp *socialApp;

SocialAppType *appType;

// assume entity instances correctly instantiated


[socialApp setSocialAppType:appType];

[managedObjectContext deleteObject:appType];

BOOL saved = [managedObjectContext save:&error];

我們期望失敗此上下文保存,因?yàn)槲覀円褜h除規(guī)則設(shè)置為拒絕,而關(guān)系不是可選的。


但是這里的保存成功了。


原因是我們沒(méi)有設(shè)置反比關(guān)系。因此,當(dāng)刪除appType時(shí),socialApp實(shí)例不會(huì)被標(biāo)記為已更改。因此,在保存之前沒(méi)有對(duì)socialApp進(jìn)行驗(yàn)證(它假定不需要驗(yàn)證,因?yàn)闆](méi)有發(fā)生任何更改)。但實(shí)際上發(fā)生了變化。但它沒(méi)有得到反映。


如果我們回想一下appType


SocialAppType *appType = [socialApp socialAppType];

appType為零。


很奇怪,不是嗎?我們得到一個(gè)非可選屬性為零?


如果你建立了反向關(guān)系,那么你沒(méi)有遇到麻煩。否則,您必須通過(guò)編寫代碼進(jìn)行強(qiáng)制驗(yàn)證,如下所示。


SocialApp *socialApp;

SocialAppType *appType;

// assume entity instances correctly instantiated


[socialApp setSocialAppType:appType];

[managedObjectContext deleteObject:appType];


[socialApp setValue:nil forKey:@"socialAppType"]

BOOL saved = [managedObjectContext save:&error];


查看完整回答
反對(duì) 回復(fù) 2019-08-27
?
吃雞游戲

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊

我將解釋我在Dave Mark和Jeff LeMarche的更多iPhone 3開發(fā)中找到的明確答案。

Apple通常建議您始終創(chuàng)建并指定反向,即使您不在應(yīng)用程序中使用反向關(guān)系。因此,當(dāng)您未能提供反向時(shí),它會(huì)發(fā)出警告。

關(guān)系不需要具有逆,因?yàn)樵谝恍﹫?chǎng)景中,逆關(guān)系可能會(huì)損害性能。例如,假設(shè)反向關(guān)系包含極大數(shù)量的對(duì)象。去除逆需要迭代表示反向弱化性能的集合。

除非你有特殊的理由不這樣做,否則建模。它有助于核心數(shù)據(jù)確保數(shù)據(jù)完整性。如果遇到性能問(wèn)題,以后刪除反向關(guān)系相對(duì)容易。


查看完整回答
反對(duì) 回復(fù) 2019-08-27
  • 3 回答
  • 0 關(guān)注
  • 563 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)