2012-08-03 2 views
-1

Я пытаюсь вызвать этот метод за один раз, когда приложения устанавливаются и запускаются в первый раз.iOS Как автоматически выпустить метод в viewDidLoad?

Моя идея - заполнить таблицу основных данных моими данными.

Как отключить этот метод в 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(); 
     } 
    } 

} 
+3

Что вы имеете в виду авто рилизинг метод ?? – PaulG

+0

shouldnt ARC сделать это за вас автоматически? –

+0

Он пытается проверить, если это первый запуск ... все же, я не знаю, почему он написал «автовыпуск» – NSPunk

ответ

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

+0

Большое спасибо, это то, что я хотел сделать;) – NamshanNet

Смежные вопросы