/ / База даних SQLite на iPhone та Simulator - iphone, база даних, sqlite, xcode4

База даних SQLite на iPhone та Simulator - iphone, база даних, sqlite, xcode4

Я створюю базу даних і ставлю *.Файл sqlite в папці «Ресурси» в Xcode. Перед відкриттям бази даних я копіюю її в папку документів із ресурсів. Це добре працює на тренажері, але не працює на iPhone. З деяких причин файл баз даних не існує на пристрої iPhone. Це мій код:

   NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
NSString *databasePath = [documentsDir stringByAppendingPathComponent:databaseFileName];


NSFileManager *fileManager = [NSFileManager defaultManager];
BOOL success = [fileManager fileExistsAtPath:databasePath];
if(!success) // all the time it"s YES, even if I delete database
{
// copy database from application folder
NSString *databasePathFromApp = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:databaseFileName];
BOOL fileExists = [fileManager fileExistsAtPath:databasePathFromApp];
if (fileExists) { // It"s NO, for some reasons database does not exist
[fileManager removeItemAtPath:databasePath error:nil];
[fileManager copyItemAtPath:databasePathFromApp toPath:databasePath error:nil];
}

[fileManager release];
}

return databasePath;

З деяких причин цей рядок постійно повертає НІ

        BOOL fileExists = [fileManager fileExistsAtPath:databasePathFromApp];

шлях у databasePathFromApp щось подібне

/var/alexander/xxx-xxx-xxx-xxx..../AppName.app/database.sqlite

Питання: чому база даних не існує в ресурсах?

Відповіді:

3 для відповіді № 1

Фінал знайшов проблему. Пристрій iPhone дбає про реєстр імен файлів, тому "database.sqlite" і "DataBase.sqlite" - це різні файли для пристрою, але ті самі файли для імітатора. Це так дивно.

Я позував це в блозі Не вдається відкрити файл на пристрої iPhone, але можна в iPhone-симуляторі


0 для відповіді № 2

Видаліть базу даних з ресурсу та додайте її ще раз & Угорі з'являється прапорець "Копіювати елементи" в папку цільової групи.

Очистити цілі та скинути симулятор.