iOS如何在viewDidLoad中自动释放方法?

时间:2012-08-03 19:11:12

标签: ios cocoa-touch

我尝试在第一次安装和启动应用程序时调用此方法一次。

我的想法是用我的数据填充核心数据表。

如何在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();
        }
    }

}

1 个答案:

答案 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];中调用此方法