В моем приложении я делаю чтение, запись и удаление в базе данных sqlite (в форме db), и он отлично работает в симуляторе, но не работает на самом устройстве (давая ошибку: No such table found
). Я очень стараюсь искать решение, но не могу найти его, или, может быть, я что-то неправильно понял.Моя база данных sqlite в db не работает на самом устройстве, но отлично работает в симуляторе
Мой дб в
/users/My Name/library/developer/Core simulator/devices/devicen-id/data/application/app-id/documents/My database.
- (NSString *) getWritableDBPath {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory , NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
return [documentsDir stringByAppendingPathComponent:mydaatabase];
}
Меня смутить куда мне нужно скопировать мою базу данных во время работы в реальном устройстве IOS и что является основной problem.Any помощь относительно этого будет очень полезно
-(void)createEditableCopyOfDatabaseIfNeeded
{
BOOL success;
NSFileManager *fileManager1 = [NSFileManager defaultManager];
NSError *error;
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:mydaatabase];
NSLog(@"=======%@", writableDBPath);
success = [fileManager1 fileExistsAtPath:writableDBPath];
if (success)
return;
NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath]
stringByAppendingPathComponent:mydaatabase];
NSLog(@"=======%@", [NSBundle mainBundle]);
success = [fileManager1 copyItemAtPath:defaultDBPath
toPath:writableDBPath
error:&error];
if(!success)
{
NSAssert1(0,@"Failed to create writable database file with Message : '%@'.",
[error localizedDescription]);
}
}
Можете ли вы проверить, есть ли fileExists в «defaultDBPath»? – almas
@ almas- я проверил в документе его там, но я не понимаю, что вы подразумеваете по умолчанию и как его проверить, спасибо за ответы –
«defaultDBPath» - это исходное место, откуда вы копируете свою базу данных, это находится в вашем коде, который вы предоставили. Просто убедитесь, что файл существует до того, как вы попытаетесь скопировать его в папку документов. – almas