Objective c iOS中的Sqlite数据库似乎是从用户目录加载的,但文件不是';与应用程序中的不一样

Objective c iOS中的Sqlite数据库似乎是从用户目录加载的,但文件不是';与应用程序中的不一样,objective-c,ios,sqlite,Objective C,Ios,Sqlite,好的,在我的应用程序的初始加载时,我从sqlite数据库读取数据。我使用以下代码打开它: NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *path = [documentsDirectory stringByAppend

好的,在我的应用程序的初始加载时,我从sqlite数据库读取数据。我使用以下代码打开它:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"golfScores.sqlite"];

if(sqlite3_open([path UTF8String], &database) == SQLITE_OK){

我一直相信这会从应用程序目录而不是应用程序包打开数据库。当添加、删除或更新记录时,应用程序中的一切都正常工作。我可以关闭应用程序,然后重新打开它,数据就会显示出来。问题是,如果我用终端查看数据库,没有任何变化。完全不同。所以它必须使用并保存到捆绑包中的数据库中,对吗?如何让应用程序更新应用程序目录中的数据库?

您的代码在我看来是正确的,听起来好像工作正常!您肯定没有访问您的应用程序包。捆绑包中的文件不能由应用程序编辑,因为它破坏了代码签名。但是,可以使用NSBundle类读取它们


我猜,无论您使用终端查看的是什么,都不是您的应用程序正在访问的同一个数据库文件。

您的代码在我看来是正确的,而且听起来好像工作正常!您肯定没有访问您的应用程序包。捆绑包中的文件不能由应用程序编辑,因为它破坏了代码签名。但是,可以使用NSBundle类读取它们


我想,无论您使用终端查看的是什么,都不是您的应用程序正在访问的同一个数据库文件。

这也是我认为唯一有意义的事情。我只是找不到这个数据库的另一个副本,它可以编辑。好的,所以我删除了应用程序目录中的数据库,以及xcode中的文件管理器中的数据库,所有的工作都是一样的。它甚至保留了以前的数据,所以很明显我看错了。好的,现在我的问题是,在finder中,我在哪里可以找到我正在访问的目录?我的应用程序位于Macintosh HD/Developer中。您是否在模拟器上运行?如果是这样的话,您可以在/Users/[your name here]/Library/Application Support/iPhone Simulator/[ios version here]/Applications/之类的地方找到您的文件。这也是我唯一有意义的事情。我只是找不到这个数据库的另一个副本,它可以编辑。好的,所以我删除了应用程序目录中的数据库,以及xcode中的文件管理器中的数据库,所有的工作都是一样的。它甚至保留了以前的数据,所以很明显我看错了。好的,现在我的问题是,在finder中,我在哪里可以找到我正在访问的目录?我的应用程序位于Macintosh HD/Developer中。您是否在模拟器上运行?如果是这样,您可以在/Users/[your name here]/Library/Application Support/iPhone Simulator/[ios version here]/Applications/之类的位置找到您的文件。