Я создал свой кончик и подвиды с IB ...
Теперь в моем AppDelegate я получил этот код:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[self initDatabase];
// Override point for customization after application launch.
[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:NO];
[self.window makeKeyAndVisible];
[self.window addSubview:tabBar.view];
[Appirater appLaunched:YES];
return YES;
}
где [self initDatabase] что-то вроде этого:
- (BOOL)copyDB {
/* Database */
NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentFolderPath = [searchPaths objectAtIndex:0];
NSString *dbFilePath = [documentFolderPath stringByAppendingPathComponent:@"food.db"];
NSError *error;
if(![[NSFileManager defaultManager] fileExistsAtPath:dbFilePath]) {
// copy db
NSString *backupDbPath = [Food getDBFileBundle];
NSLog(@"Bundle DB Path: %@", backupDbPath);
if(backupDbPath == nil) {
NSLog(@"Unable to find main DB");
return NO;
} else {
BOOL copiedBackupDb = [[NSFileManager defaultManager] copyItemAtPath:backupDbPath toPath:dbFilePath error:&error];
if(!copiedBackupDb) {
NSLog(@"Unable to copy main DB");
NSLog(@"Error description: %@", [error localizedDescription]);
return NO;
} else {
NSLog(@"DB Copied in %@", dbFilePath);
return YES;
}
}
}
else {
NSLog(@"Local DB already exists at path: %@", dbFilePath);
return NO;
}
return YES;
}
теперь каждый раз, когда он запускается на симуляторе или устройстве, в отладчике я видел, что локальная БД уже существует по пути: бла бла бла ... ее не должно быть! (размер файла также равен нулю!)
Теперь, если я переместлю процедуру initDatabase в первый контроллер представления на панели вкладок (в методе viewDidLoad), она будет работать как шарм ...
в чем дело?
Я очистил проект, удалил приложение как на симуляторе, так и на устройстве, прежде чем пытаться ... что происходит? Как я могу решить эту проблему?
Я использую Xcode 4.0.2 с прошивкой 4.x