我尝试在第一次安装和启动应用程序时调用此方法一次。
我的想法是用我的数据填充核心数据表。
如何在viewDidLoad中自动释放此方法?
- (void)insertNewObject:(id)sender
{
if ((firstRun!=YES)) {
NSLog(@"The data was already Added");
}
else {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:[[NSString alloc]initWithFormat:@"new"] forKey:@"name"];
firstRun = NO;
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
}
}
答案 0 :(得分:1)
您可以使用NSUserDefaults
来验证它是否是第一次运行。
- (void)insertNewObject:(id)sender
{
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSDictionary *userDefaultsDefaults = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithBool:YES], @"firstRun", nil];
[prefs registerDefaults:userDefaultsDefaults];
BOOL firstRun = [prefs boolForKey:@"firstRun"];
if (firstRun==YES) {
NSManagedObjectContext *context = [self.fetchedResultsController managedObjectContext];
NSEntityDescription *entity = [[self.fetchedResultsController fetchRequest] entity];
NSManagedObject *newManagedObject = [NSEntityDescription insertNewObjectForEntityForName:[entity name] inManagedObjectContext:context];
[newManagedObject setValue:[[NSString alloc]initWithFormat:@"new"] forKey:@"name"];
// Save the context.
NSError *error = nil;
if (![context save:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
[prefs setBool:NO forKey:@"firstRun"];
[prefs synchronize];
} else {
NSLog(@"The data was already Added");
}
}
您可以使用viewWillDisappear
viewDidLoad
或[self insertNewObject:nil];
中调用此方法