需要关于一对实体及其关系和整个方法的建议。很多核心数据教程和示例在那里看起来很简单,但实际上你试图让某些东西变得真实!因此,问题是:复杂的核心数据关系混乱
我需要知道该方法,如果我所做的是好的..让我们说一个用户创建他的个人资料,并开始组织名片。从一开始,让我们说这个应用程序能够处理很多用户。
的型号: 实体:
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