我知道如何清除核心数据,但我想做的是让它在60分钟后自动清除。
购物车。在购物车清理之前,我想给客户一个相当长的时间来下订单。成功购买后会自动清除。现在我需要采用相同的代码清除核心数据,并在60分钟后运行,无论如何。
我该怎么做?请给我举个例子。
我知道持续时间方法后的执行选择器,我可以在我用来将项目添加到购物车的方法中调用它。我只在购物车的总物品数等于1时调用它,所以它只调用一次。
也许他们是更好的方法。想看看你的iteads。
感谢您的时间。
答案 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];
}