ios - 有什么方法可以在 iOS 的 CoreData 中存储一周前的数据(比如 CMStepCounter(7 天数据)中的步行步数)?

标签 ios objective-c core-data

我有这样的要求,我需要在核心数据中存储一周前的数据(NSDictionary/NSMUtableArray)

例如:今天的日期:15th_January_2016

我需要存储从 (14th_January_2016 到 8th_January_2016) 的数据。无需在 Core Data 中存储今天的数据

另一个例子 喜欢:如果 16th_01_2016 ===> 意味着我需要存储从 15th_01_2016 到 9th_01_2016

的数据

如果有人知道解决方案/示例代码。

最佳答案

我建议您添加 creationDate属性到您的数据条目。 当用户生成数据时,您可以将当前日期与用户数据一起保存。 您可以时不时地(例如,在应用程序启动时,每天一次)检查超过一周的条目并将其删除。

首先,您需要一个一周前的引用日期。你应该能够像这样得到它:

NSCalendar       *calendar;
NSDateComponents *comps;
NSDate           *oneWeekAgo;

calendar   = [NSCalendar currentCalendar];
comps      = [[NSDateComponents alloc] init];
[comps setDay:-8];

oneWeekAgo = [calendar
              dateByAddingComponents:comps
                              toDate:[NSDate date]
                             options:0];
[comps release];

然后您需要获取所有具有较小 creationDate 的条目(比引用年龄大):

NSArray        *oldEntries;
NSFetchRequest *fetchRequest;
NSPredicate    *predicate;

fetchRequest = [[NSFetchRequest alloc]
                initWithEntityName:@"<your entry name>"];
predicate    = [NSPredicate predicateWithFormat:
                @"creationDate < %@", oneWeekAgo];
[fetchRequest setPredicate:predicate];
oldEntries   = [moc executeFetchRequest:fetchRequest error:&error];
[fetchRequest release];

然后您可以使用删除每个旧条目 [NSManagedObjectContext deleteObject:<the entry>] .

关于ios - 有什么方法可以在 iOS 的 CoreData 中存储一周前的数据(比如 CMStepCounter(7 天数据)中的步行步数)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34807978/

相关文章:

cocoa-touch - 临时构建更改文档目录

iphone - 如何在点击后突出显示电子邮件地址

iphone - 使用正确的方法 integerForKey、objectForKey for NSUserDefaults 进行迭代,以备份到数据库?

ios - 核心数据反向关系ios

ios - iPhone X 自定义标签栏问题

IOS 在 View 之间切换

iphone - 为什么单击任何按钮时我的 UIActionSheet 都会崩溃?

ios - 如何在代码中复制核心数据托管对象

ios - 如何将更改从一个 ManagedObject 写入类似的 ManagedObjects

ios - 自动布局约束优先级