скопируйте файл sqlite в storePath: там ничего нет (основные данные) - PullRequest
0 голосов
/ 26 октября 2011

Я создал файл sqlite с «Lita», я скопировал его (перетаскивая) в xcode в папке «Другие источники» (и проверил квадрат, чтобы скопировать файл). Затем я попытался проверить, скопирован ли файл или нет, но в этой папке: в документы ничего не копируется? :

my path : /Users/MyProfile/Library/Application Support/iPhone Simulator/4.3/Applications/154BC5C5-FF55-48B5-A7A0-A80496212ACB/Documents

и мой код, который должен его скопировать, или, может быть, я что-то неправильно понял?

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator {

    if (persistentStoreCoordinator_ != nil) {
        return persistentStoreCoordinator_;
    }

    NSLog(@"my path : %@",self.applicationDocumentsDirectory);
    NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"myCD.sqlite"];
    /*
     Set up the store.
     For the sake of illustration, provide a pre-populated default store.
     */
    NSFileManager *fileManager = [NSFileManager defaultManager];
    // If the expected store doesn't exist, copy the default store.
    if (![fileManager fileExistsAtPath:storePath]) {
        NSString *defaultStorePath = [[NSBundle mainBundle] pathForResource:@"myCD" ofType:@"sqlite"];
        if (defaultStorePath) {
            NSLog(@"in if defaultStorePath");
            [fileManager copyItemAtPath:defaultStorePath toPath:storePath error:NULL];
        }
    }

Таким образом, файл sqlite должен быть скопирован в симулятор iphone / 4.3 / etc. но там ничего нет ...

Спасибо

1 Ответ

1 голос
/ 27 октября 2011

Вы правильно копируете файл.

Однако, если это не файл хранилища, сгенерированный Core Data, Core Data не сможет использовать его как хранилище.

Базовые данные - это не простая оболочка SQLite, но использование хранилища SQLite - это всего лишь один из вариантов хранилища базовых данных. Базовые данные должны определенным образом структурировать хранилище, а схема sqlite базовых данных недокументирована. Вы не можете просто вставить любой файл SQLite и использовать его в качестве основного хранилища данных.

Вам нужно будет импортировать данные в Core Data, и Core Data создаст хранилище и запишет в него данные. Затем вы можете включить этот файл в комплект приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...