sqlite数据库在每次编译和运行时重置

sqlite数据库在每次编译和运行时重置,sqlite,ios-simulator,Sqlite,Ios Simulator,我已经建立了一个基本的数据库应用程序,用户可以在其中将记录插入到一个表中,然后应用程序将它们显示在TableView上 一切都在按预期运转。例如,即使我们从AppSwitcher中关闭应用程序并从springboard重新启动它,也会显示新记录 但每次我使用Xcode构建和运行数据库时,数据库都会变成默认记录!新的记录根本不存在 这正常吗?。。。但是,如果我想测试我的应用程序以获取新记录,该怎么办?有办法吗 顺便说一句,JFYI,下面是我用来制作可编辑数据库的代码 -(NSString *)cr

我已经建立了一个基本的数据库应用程序,用户可以在其中将记录插入到一个表中,然后应用程序将它们显示在TableView上

一切都在按预期运转。例如,即使我们从AppSwitcher中关闭应用程序并从springboard重新启动它,也会显示新记录

但每次我使用Xcode构建和运行数据库时,数据库都会变成默认记录!新的记录根本不存在

这正常吗?。。。但是,如果我想测试我的应用程序以获取新记录,该怎么办?有办法吗

顺便说一句,JFYI,下面是我用来制作可编辑数据库的代码

-(NSString *)createEditableDatabase{
// Check if DB already exists
BOOL success;
NSFileManager *fileManager = [NSFileManager defaultManager];
NSError *error;

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDir = [paths objectAtIndex:0];
NSString *writableDB = [documentsDir stringByAppendingPathComponent:@"Database.db"];

success = [fileManager fileExistsAtPath:writableDB];

//The editable DB already exists
if (success) {
    return writableDB;
}


//The editable DB does not exist
//Copy the default DB into App's Doc Dir.

NSString *defaultPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"Database.db"];

success = [fileManager copyItemAtPath:defaultPath toPath:writableDB error:&error];

if (!success) {
    NSAssert1(0, @"Failed to create writable DB file: '%@'", [error localizedDescription]);
}
return writableDB;

}

在深入挖掘时,我注意到在插入记录时,finder中的数据库修改日期没有更新。因此,我发现我仍然使用旧路径执行DB操作(而不是文档操作)。:)现在一切正常。无论如何,感谢Nick

代码看起来就像你总是遇到“复制默认数据库”,你应该在第一个
if(success)…
@Rajat Bansal很难说出哪里出了问题,你能把nslog放到你的代码中,自己看看数据库什么时候存在吗,正在转储文件路径等,并查看它何时从默认数据库复制?@Nick实际上,我使用了NSLog来确认代码在if中的return语句之外没有执行,因此它确实在可写路径中找到了数据库!那为什么没有新唱片?!我想我需要深入挖掘。将很快更新。坚持到数据库有效吗?你应该使用应用文件夹中的工具打开数据库,确认数据已写入其中。在深入挖掘时,我注意到finder中的数据库修改日期在我插入记录时没有更新。因此,我发现我仍然使用旧路径执行DB操作(而不是文档操作)。:)现在一切正常。无论如何,谢谢尼克