我正在使用sqlite3和iOS。
我的资源文件夹中有一个数据库“2012”。我在我的应用程序的目录文件夹中备份了它(名为2013),因此在那里,数据库2012和2013具有相同的结构。
我制作了一个视图控制器,用户可以选择要打开2012或2013的数据库。
如何将“2013”NSString传递给连接方法?
-(void)connect
{
NSLog(@"%c",restore); // restore is a BOOL that becomes "YES" when i click the button for restore
if (restore == YES)
{
databaseName = [NSString stringWithFormat:@"%@.db",currentYear];
}
else
{
databaseName = @"2012.db";
}
NSLog(@"Database name is: %@",databaseName);
// Get the path to the documents directory and append the databaseName
NSArray *documentPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [documentPaths objectAtIndex:0];
databasePath = [documentsDir stringByAppendingPathComponent:databaseName];
NSLog(@"Database path is: %@",databasePath);
[self checkAndCreateDatabase];
}
我正在尝试将年份值发送到连接:
NSString *year = restoreYear.text;
DatabaseDB *databaseDB = [[DatabaseDB alloc]init];
databaseDB.currentYear = year; //in DatabaseDB i have created property for current year and restore
databaseDB.restore = YES;
答案 0 :(得分:0)
很抱歉,但上述问题不够清楚..
我的应用程序的Resources文件夹中有一个sqlite数据库,当我运行应用程序时,数据库被复制到Directory文件夹中,好吗?我有一个用户可以备份数据库的菜单,因此创建了第二个数据库。直到现在一切正常。
当用户单击还原第二个数据库的按钮时,问题出现在还原上。如何告诉数据库连接第二个数据库?好的,我可以通过connect方法传递名称。然后?应用程序如何知道下次打开应用程序时,第二个数据库将被打开?
谢谢。
答案 1 :(得分:0)
恢复功能表示您希望返回拍摄快照的时间点。如果这是您真正想要的,那么您需要做的就是将备份的数据库复制到“活动”数据库的名称。您可以选择重命名主动副本,以便撤消恢复。