-1

アプリが初めてインストールされて起動されるたびに、このメソッドを一度だけ呼び出そうとします。

私の考えは、コア データ テーブルに自分のデータを入力することです。

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

}
4

1 に答える 1

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];

于 2012-08-03T19:36:32.153 に答える