iOS SDK: перемещение файла в AppDelegate - PullRequest
0 голосов
/ 07 июня 2011

Я создал свой кончик и подвиды с 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

...