Я думаю, вам нужно разделить код.Попробуйте это и скажите мне, если это работает
1) Извлеките логику переноса данных из БД в отдельную функцию, назовем ее loadPlans.
- (void) loadPlans {
plans= [[NSMutableArray alloc] init];
NSLog(@"Data base is entering");
NSString *path1 = [[NSBundle mainBundle] pathForResource:@"antara" ofType:@"sqlite"];
FMDatabase *db1 = [[FMDatabase alloc] initWithPath:path1];
[db1 open];
FMResultSet *fResult2= [db1 executeQuery:@"SELECT * FROM main"];
NSLog(@"fresult2 ready");
while ( [fResult2 next])
{
planData = [fResult2 stringForColumn:@"planName"];
[plans addObject:planData];
NSLog(@"The data is =%@",planData);
}
[db1 close];
}
2) Очевидно, этот кодвзяты из функции, которую вы вставили выше, и, следовательно, удалите эти строки из этой функции.
3) При нормальном потоке: вызовите loadPlans перед вызовом вышеупомянутой функции
4) Каждый раз, когда вычто-то вставлено в базу данныхСнова вызовите эти две функции
[self loadPlans];
[PickerView reloadComponent:n];
Все это предполагает, что запись в БД плана происходит на той же странице и в одной и той же ветке, так что вы можете контролировать ее, где вы можете вызывать эти функции,Если это предположение не соответствует действительности, то также объясните, как и когда планы добавляются в базу данных, вставьте здесь немного кода о записи в базу данных.