2010-03-17 50 views
0

当应用程序启动时,将其复制到您的文档目录。 假设您的sqlite数据库在您的项目中,您可以使用下面的代码将数据库复制到您的文档目录。我们还假设你的数据库被称为mydb.sqlite。如何创建包含在iPhone Xcode项目中的sqlite数据库的可写副本?

//copy the database to documents 
NSFileManager *fileManager = [NSFileManager defaultManager]; 
NSString *documentsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"mydb.sqlite"]; 
if(![fileManager fileExistsAtPath:path]) 
{ 
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/mydb.sqlite"]]; 
    [data writeToFile:path atomically:YES]; 
} 

任何人都知道的一种更好的方式来做到这一点。这似乎工作...

回答

1

这看起来对我有效。用户也可以直接将该文件与此NSFileManager方法,而不是复制:

- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error; 

我想用这个方法,而不是可能会有点更具可读性,但情况因人而异。

+0

这样好多了,因为它不会将整个数据库先复制到内存中! – 2010-03-18 02:40:28

+0

你说得对。我认为它可能很小,因为我所有的SQLite数据库都很小。但在这种情况下,它并没有伤害到我。 :) – 2010-03-18 03:02:37