Ios 我将如何使用核心数据模型构建一个简单的基于货币的应用程序,其中包含单个或多个实体

Ios 我将如何使用核心数据模型构建一个简单的基于货币的应用程序,其中包含单个或多个实体,ios,core-data,attributes,entities,datamodel,Ios,Core Data,Attributes,Entities,Datamodel,我有我的第一个应用程序在管道中,我确切地知道它将如何工作;让我绞尽脑汁的是背景中的核心数据模型 该应用程序的前提是记录您何时给某人钱,何时从此人处收到钱,或何时收到/赠送礼物。这不会很复杂,因为它是针对老一代的 UI原则将是一种基于选项卡的方法,第一个选项卡是“时间线”。在时间轴中对您所给予和接受的对象的引用 时间线中显示的数据为: -日期在每个“部分”的顶部,让我们称之为 -活动名称 -人名 -位置 -通货 -数量 我想我会把它放在一个有标题、副标题的单元格里,也许还会把场合和地点合并起来。如

我有我的第一个应用程序在管道中,我确切地知道它将如何工作;让我绞尽脑汁的是背景中的核心数据模型

该应用程序的前提是记录您何时给某人钱,何时从此人处收到钱,或何时收到/赠送礼物。这不会很复杂,因为它是针对老一代的

UI原则将是一种基于选项卡的方法,第一个选项卡是“时间线”。在时间轴中对您所给予和接受的对象的引用

时间线中显示的数据为: -日期在每个“部分”的顶部,让我们称之为 -活动名称 -人名 -位置 -通货 -数量

我想我会把它放在一个有标题、副标题的单元格里,也许还会把场合和地点合并起来。如果用户单击某个单元格,它将显示该用户与您之间的所有条目和交易

用户还可以按事件名称、人名、位置和/或日期进行搜索

考虑到这一点,我脑子里就有了如何绘制核心数据模型的想法,但这毫无意义

因为我想使用NSFetchedResultsController,我知道我不能跨多个实体获取请求,但我可以使用关系。这就是我迷路的地方

我的一个想法是使用一个实体,其属性为name of event、name of person、Date、Currency和Amount。这样,在时间轴视图中,我可以输入每个单元格的所有信息

同时,这对我来说没有充分的意义,因为应该有更多的实体。例如,我可以想象:

场合(实体) 名称(属性) 位置(属性) 日期(属性)

个人(实体) 名称(属性)

礼品(实体) 货币金额(属性) 货币(属性) 礼品(属性-可选)

行动(实体) 给定(属性-Bool) 已接收(属性-Bool)

这是我的另一个想法,但如果可能的话,提取每个单元格似乎需要很多努力。应用程序的每个用户将永远不会超过100个以上的单元,所以我们不讨论图像等

我坚持这种方法;我是否继续使用关系?如果是,什么

我迷路了,任何帮助都将不胜感激

谢谢,
阿米特

你走在正确的轨道上

不要担心复杂性或数据量-核心数据可以在移动设备上轻松处理100.000条记录。通过关系,您可以快速高效地获取和过滤这些数据

您的数据模型可能如下所示:

Person <---->> Transaction 
Transaction <<----------> Location
Transaction <<----------> Occasion
Transaction <-----------> Gift

Person (name, birthday, etc)
Transaction (createdDate, status [given, pending, canceled, etc.], category, type)
Location (name, lat, lon, address...)
Occasion (title, category)
Gift (type, amount, currency, shortName, notes)
等等


享受吧

这个简短的视频讲座可能会帮助你四处走动。谢谢你,哈维尔。我在网上学习了这门课程,一年后也学习了这门课程,虽然这对理解CoreData的概念很有帮助,但我对CoreData非常满意,只是不知道如何有效地为这个特定的应用绘制模型。亲爱的Muni,非常感谢您的回复,这非常有帮助。它给了我一种全新的方式来看待问题的解决方案,所以我非常感激。我有几个问题需要跟进-我为新手的问题道歉!交易和地点之间的关系是否会改变。。在链接到位置的事务中是否有名为location等的属性?另外,在fetchrequest中,我将使用事务实体来引入结果,并将关系返回给人物、场合等?对不起,谢谢你!很抱歉蒙迪-有点打字错误!:)你基本上是对的。关系有名称(如属性)。您可以在模型编辑器中设置它们。确保to-many关系具有复数名称(例如“事务”)-这使其更易于阅读。是的,您可以使用NSPredicate获取事务并进行筛选,使用NSSortDescriptor进行排序,使用关系作为关键路径。这些API并不是那么难,一旦你掌握了它们,它们就会非常强大。这对Mundi非常有帮助-非常感谢。这真的给了我一个很好的平台来开始和推进这个项目。你帮了大忙,从这个角度来看,我对它的工作原理有了新的理解和欣赏。再次感谢蒙迪-非常感谢。
NSUInteger numberOfGifts = person.transactions.count;

NSSet *nearLocations = [locations filteredSetUsingPredicate:locationPredicate];
NSSet *nearTransactions = [nearLocations valueForKeyPath:@"transaction"];