需要關於一對實體及其關係和整個方法的建議。很多核心數據教程和示例在那裏看起來很簡單,但實際上你試圖讓某些東西變得真實!因此,問題是:複雜的核心數據關係混亂
我需要知道該方法,如果我所做的是好的..讓我們說一個用戶創建他的個人資料,並開始組織名片。從一開始,讓我們說這個應用程序能夠處理很多用戶。
的型號: 實體:
1-用戶 2- CardGroup 3卡 4-條目
現在這些是四個實體。 用戶是添加的用戶列表,每個用戶擁有自己的一組卡。這僅僅是用戶使用該設備(應用程序)而不是人員實際商業名單的名單正在存儲。例如,用戶將是我,並且我有一堆名片躺在這個應用程序組織。這個實體'用戶'不會持有印在名片上的名字,..希望你明白這一點。
實體卡,持有名片清單。這實際上是將數據保存到卡上的主要部分。
CardGroup,這是一個智能羣體。用戶可以將類似於「Wallstreet」的類別添加爲一個組,另一個可以是「Silicon Valley」,他們可以是「UniversityMen」或「Laydees」。
條目是有點像卡片的副本,可以說隨着時間的推移,這傢伙有5個不同的工作,這個條目只是持有卡隨時間變化的那些方面。跟蹤器可以這麼說..
我想弄清楚這裏的關係..
1 - 用戶< ----------------- >> CardGroup 一個用戶可以有多個卡組 - Wallstreet,SiliconValley,MyCity,WorkPlace
2- CardGroup < ------------ >> CardDude 每個cardGroup可以容納一堆biz卡。 CardDude可以成爲WallStreet和/或MyCity的一部分,它說的是相同的..?另外,Wallstreet可以容納很多卡片。 林混淆whther這是一個許多一對多關係或者一個一對多 CardGroup < < ------------- >> CardDude
這是使我認識到,英語不是我的第一語言。
3. 用戶只能知道一個CardDude的權利嗎?讓我們打電話給傑森,顯然不能有許多傑森。它只能是一個。 而這種關係的因素是 用戶< ----------------> CardDude一對一。另外,如果我父親是這個應用程序中的另一個用戶(他的名字在第一個實體「User」中),那麼他可能有他的CardDude Jason副本。是的,我願意這樣做的原因。最後,我和我的父親都在CardDude中擁有自己的Jason。如果我以用戶身份修改Jason,那麼它應該反映在其他CardGroups,如wallstreet,silicon,但不在我父親的User entires上,應該保持不變(假設他之前創建了一個類似的)。
同樣,林不知道現在什麼關係.. 用戶< ------------------> CardDude
這裏的藉口是,當添加carddude,這隻會對USER發生一次,並且不會讓USER多次添加相同的CARDUDE,如果不同的USER正在添加,他可以。
繼承人更大的拼圖, 現在我wana添加最新的信息,該CardDude, 我叫它入口。它所要做的就是創建一個timeStamp,並添加一張CardDude Jason的條目,關於他可能擁有的一張新卡片。可以這麼說。
我願意看到每個組。在SQL方面,
選擇ENTRY.name條目,其中USER = ME AND CARDGROUP =華爾街
I thot I'd have
CardGroup(WallStreet) <----------->>CardDude (Jason) and some more<----------->>Entry
WHERE,用戶(我)< ------------> CardDude(賈森)
USER<-------------->>CardGroup to many
USER<--------------->CardDude (onetoone)
USER<--------------->>Entry (to many)
CardGroup<------------>>CardDude
CardDude<------------->>Entry (tomany) can tell me how many last cards did Jason get..
請指導我如何在這裏實現清晰的圖像,也由於每個用戶只能有一個與CardDude關係,怎麼會我避免ID放在一個重複的類似條目.. 另一點是,我爸的用戶會重新創建整個cardgroups,carddude和條目。他們相當獨立。
謝謝你們,這是一個looong問題..
UPDATE:答案後,我明白了很多東西,現在有一件事是,它的他們理想的方式從CardGroup得到CardEntry(其將包括CardPerson的所有CardPerson)...現在我只是迭代,但是這些都是獲得所有CardEntry的更好方法。
//cardGroupFriends is a CardGroup object
for(CardPerson *person in [cardGroupFriends persons]){
for(CardEntry *entry in [person entries]){
NSLog(@"%@ = %@", person.name, entry.company);
}
}
我只是不能幫助通過sqlite的路線..但我越來越喜歡核心數據!它實際上使事情變得非常簡單。 我在考慮NSFetchedResultsController從CardGroups中獲取CardEntries,繞過CardPerson實體(假設我獲取CardGroups中的所有CardPersons)並使用timeStamp作爲排序順序獲取CardEntries。
而對我的理解。當林添加新的CardEntry,我只是用
[cardPerson addCardEntryObject:newEntry];
是否瞭解,這個「newEntry」是部分CardPerson - >然後CardGroup - >電流 - 用戶??假設在應用程序啓動時選擇了用戶,並且CardGroups是從那裏派生的?核心數據是否考慮到了這一點?我不希望這個newEntry出現時,應用程序切換用戶,並選擇相同的CardPerson! 真的很感謝你的幫助
你是真棒!.. 感謝您抽出時間出來的人。我覺得我理解的東西在這裏..雖然 一件事,那裏有用戶和CardPerson沒有關係? – user134611 2012-01-28 05:48:11
And ..最後一件事, – user134611 2012-01-28 06:05:22
And ..最後一件事,我假設在獲取CardGroups時,我必須爲該用戶分配一個NSPredicate,那沒關係。 可以說,我點擊** WallStreet **這有**兩個** CardPerson - _John,Jane_,每個每個至少有** 3 **條目。我想挖掘底線條目,通常是CardGroup.persons = [NSSet],通過每個設置..'CardPerson.entries',最後結合兩個NSSets將獲得6個條目。 什麼是正確的Coredata方法直接提取沒有CardPerson的條目,..因爲我現在不在尋找一個特定的人.. – user134611 2012-01-28 06:15:32