0

我为我的 iPhone 应用程序使用了一个名为 db.sqlite 的数据库。为了找到正确的路径,我使用以下代码:

- (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";

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

4

1 回答 1

1

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

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

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

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

于 2013-01-19T17:32:49.197 回答