связать базу данных sqlite с ошибкой app и stringByAppendingPathComponent - PullRequest
2 голосов
/ 04 января 2012

Вероятно, есть еще много вопросов, которые я даже не знаю задавать, так как я новичок в программировании приложений.

Первоначально я создал базу данных из приложения, скопировал ее в мою рабочую папку (которая, вероятно, находится не там, где она должна в конечном итоге находиться), а затем добавил свои записи (около 1000 из них) из текстового файла.

Первые два вопроса, которые приходят на ум: - в какой папке должна быть база данных? - как это развертывается с приложением?

Я нашел довольно мало примеров использования следующих строк в функции persistentStoreCoordinator:

NSString *storePath = [[self applicationDocumentsDirectory] stringByAppendingPathComponent: @"myDatabase.sqlite"];
NSURL *storeUrl = [NSURL fileURLWithPath:storePath];

Но в первой строке выдается ошибка перед компиляцией: «Тип получателя NSURL для сообщения экземпляра не объявляет метод с селектором stringByAppendingPathComponent:». Почему он не работает для меня?

И действительно ли это лучший способ связать мою базу данных с остальной частью приложения?

Спасибо!

1 Ответ

1 голос
/ 21 мая 2012

Самое простое решение - использовать NSUrl вместо NSString. SO user @trapper уже предоставил решение по ссылке ниже.

импорт sqlite в coredata

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"Database.sqlite"];

// If the database doesn't exist copy in the default one
if (![storeURL checkResourceIsReachableAndReturnError:NULL])
{
    NSURL *defaultStoreURL = [[NSBundle mainBundle] URLForResource:@"Database" withExtension:@"sqlite"];

    if ([defaultStoreURL checkResourceIsReachableAndReturnError:NULL])
    {
        NSFileManager *fileManager = [NSFileManager defaultManager];
        [fileManager copyItemAtURL:defaultStoreURL toURL:storeURL error:NULL];
    }
}
...