我是客观c和核心数据的新手。我正在制作一款类似闪存卡应用的iOS应用。我有一个核心数据,与一个与ForeignWord实体(不同语言)有多对一关系的EnglishWord实体。
对于每个ForeignWord实体,我想跟踪某些元数据:我查看了多少次这个词,我查看它的日期,我给它的分数等等。理想情况下,如果我可以有一个数组/字典作为ForeignWord管理对象本身的属性。这是不可能的。
我能想到的唯一选择是创建一个名为'Score'的新实体,每个ForeignWord实体'拥有'许多Score管理对象(一对多),每次我创建一个新的'Score'管理对象查看外国语。
然而,这听起来非常混乱。如果我有1000个单词,那么我将在sqlite数据库中有1000个不同的表,每个卡一个...这会减慢速度吗?有1000个不同的表是不是很糟糕?
这真的是这样做的吗?有更优雅的解决方案吗?谢谢!
答案 0 :(得分:1)
您可以考虑添加一个名为“Viewing”的表格,该表格与EnglishWord和ForeignWord都有关系(对1)。然后,您可以跟踪此表中感兴趣的元数据,并汇总此表中的数据,以确定您查看特定单词的次数,是否正确识别,等等。
答案 1 :(得分:0)
我会创建一个名为ViewEntry的新表,或者与两个单词表的链接关系。这样,当一个单词被查看时,您可以存储您想要的任何元信息,以及具有英语和外国版本的活动链接。像这样:
通过这种方式,您可以创建一个新的ViewEntry,将其foreignVersion
和word
属性设置为英语和外语单词,设置日期,分数和总答案时间(以及您想要的任何其他内容) 。然后你可以做一些非常好的查询来获取有用的信息。
给我所有英文单词“school”的国外版本,其中得分低于50%。
我希望用户一直尝试俄语翻译“house”及相关分数。
英语单词的最差/最佳成绩是什么?
最/最不看英文(或外国)字是什么?
所有这一切都相对容易,因为英语单词可以访问它所查看的所有时间,任何英语版本的任何外国版本都可以这样做。您还可以访问分数和查看日期,并从该数据中提取所有英语/国外版本。
您也不需要创建1000个表:)