2013-01-19 22 views
0

我使用名为db.sqlite的数据库为我的iPhone应用程序。 为了找到我使用下面的代码的正确路径:应用程序选择错误的数据库路径

- (NSString *) filePath { 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
return [[paths objectAtIndex:0] stringByAppendingPathComponent:@"db.sqlite"]; 

}

这将返回以下路径:

/Users/*******/Library/Application Support/iPhone Simulator/6.0/Applications/E1D5F78D-7FD2-45D7-A3DE-B53BCBB9BDC5/Documents/db.sqlite 

但在这个路径中的数据库是新创建并空。 将正确的路径作为字符串返回时效果很好,但我认为这不适用于iPhone。

return @"/Users/*******/workspace/xcode/MyApp/MyApp/db.sqlite"; 

我做错了什么或忘记了吗?

回答

1

您发布的代码用于从应用程序的Documents沙箱目录中获取文件。根据你想要的路径,你需要从应用程序的资源包中获取文件。

NSString *path = [[NSBundle mainBundle] pathForResource:@"db" ofType:@"sqlite"]; 

请记住,您的db.sqlite文件在应用程序包内是只读的。不要试图写入这个数据库文件。

如果需要写入数据库,则必须先将文件复制到可写位置(如Documents目录)。然后使用该文件的副本进行所有阅读和写作。

+0

我可以(必须)通过代码复制文件或手动完成文件吗?之后我如何才能将正确的文件上传到iPhone上? – daydr3amer

+1

它必须通过代码完成。通常你检查文件目录中是否存在文件。如果没有,则从该包中复制该模板。然后你使用Documents中的文件。 – rmaddy