打破核心数据日期属性 - 好主意?

时间:2013-08-02 14:56:39

标签: core-data

我正在学习核心数据,我有一个项目启动并运行,可以很好地存储,创建,检索,更新和删除实体。到目前为止,我喜欢使用Core Data。

我有一个简单的实体,有5个属性。其中一个是约会。我称之为dateCreated。我在我的应用程序中使用TabBar,我希望能够按年份和月份以及月份详细信息对不同屏幕上的内容进行排序。我有几个问题,关于什么是好的做法以及什么对性能有益。

理想情况下,我希望我的收藏视图按年划分,每个单元格包含一个月,将它们带到该月份表。目前在我的一个选项卡中有一个UITableView,它可以加载用户创建的数据,但我还没有按年和月分解它。意思是他们可以继续输入日期和其他信息,而且一张表只是不断变大。我希望使用Date Attribute my - dateCreated属性在我的Collection View中将表拆分为每个月的多个表。似乎所有的数据都可以根据我的需要进行微调和显示,但我不确定它是否是最好的方法,或者即使它是使用Core Data时的标准做法。我认为我可以使用相同的表来加载基于年份和月份的数据。而不是制作多个月的表。

我的问题就像它们一样长篇大论:我应该创建更多的Date属性,还是使用格式化程序显示在我的TableView中的dateCreated将其显示为“2013年7月31日”。换句话说,我可以根据我的dateCreated属性单独分解用户创建的数据。 第二。我理解如何从Core Data堆栈“获取”数据并使用NSFetchedResutsController在TableView中获取它,但是如果我想在屏幕中显示某些属性而不包含表视图,那该怎么办呢?我还应该使用NSFetchedResultsController,还是应该使用其他东西?关于获取数据的Apple Docs显示了如何从要显示的实体中获取特定属性,但是看起来像是如此简单的代码以至于我认为我看错了部分。

好的,我理解这听起来有点令人困惑所以我想知道我是否应该使用我的dateCreated属性来分解数据,或者创建一个年份的一个Date属性,一个月用一个,并保留一个用于dateCreated和排序就这样。另外,如果我只是想在屏幕上没有表格的情况下显示某些属性数据,我还应该使用NSFetchedResultsController吗?

如果您提供任何帮助,感谢您的帮助。我正在学习核心数据。它非常强大。

1 个答案:

答案 0 :(得分:0)

您可能希望将提取的谓词调整为:

    NSDate *startDate = ....;
NSTimeInterval length;

[[NSCalendar currentCalendar] rangeOfUnit:NSMinuteCalendarUnit 
                                startDate:&startDate
                                 interval:&length 
                                  forDate:startDate];

NSDate *endDate = [startDate dateByAddingTimeInterval:length];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(eDate >= %@) AND (eDate < %@)", startDate, endDate];