如何在指定时间段后清除核心数据?

时间:2014-07-20 18:20:11

标签: objective-c cocoa-touch core-data uiviewcontroller nstimer

我知道如何清除核心数据,但我想做的是让它在60分钟后自动清除。

购物车。在购物车清理之前,我想给客户一个相当长的时间来下订单。成功购买后会自动清除。现在我需要采用相同的代码清除核心数据,并在60分钟后运行,无论如何。

我该怎么做?请给我举个例子。

我知道持续时间方法后的执行选择器,我可以在我用来将项目添加到购物车的方法中调用它。我只在购物车的总物品数等于1时调用它,所以它只调用一次。

也许他们是更好的方法。想看看你的iteads。

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

您可以添加可以清除核心数据的计时器。见下面的代码

 NSTimer * clearTimer = [NSTimer scheduledTimerWithTimeInterval:60*60 target:self selector:@selector(clearCoreData) userInfo:nil repeats:YES];

制作局部变量如果你必须使用其他明智的计时器你可以写:

[NSTimer scheduledTimerWithTimeInterval:60*60 target:self selector:@selector(clearCoreData) userInfo:nil repeats:YES];

并创建清除核心数据的方法。

-(void) clearCoreData {
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:_managedObjectContext];
[fetchRequest setEntity:entity];

NSError *error = nil;
NSArray *items = _managedObjectContext executeFetchRequest:fetchRequest error:&error];

   for (NSManagedObject *managedObject in items) {
     [_.managedObjectContext deleteObject:managedObject];
   }
   [_.managedObjectContext save:&error];
}

您还可以清除整个核心数据:

-(void)resetCoreData {
NSPersistentStore *store = ...;// core data NSPersistentStore object
NSError *error;
NSURL *storeURL = store.URL;
NSPersistentStoreCoordinator *storeCoordinator = ...;// core data NSPersistentStoreCoordinator object            
[storeCoordinator removePersistentStore:store error:&error];
[[NSFileManager defaultManager] removeItemAtPath:storeURL.path error:&error];
}