当我使用 iPhone 运行项目时如何在 iOS 中使用 sqlite
Posted
技术标签:
【中文标题】当我使用 iPhone 运行项目时如何在 iOS 中使用 sqlite【英文标题】:how to use sqlite in iOS when i use iPhone to run the project 【发布时间】:2015-11-03 08:29:00 【问题描述】:当我使用模拟器时,我可以在 /documents 中找到数据库文件。但是当我使用我的 iPhone 运行项目时,我找不到数据库文件。 我应该什么时候创建数据库文件或在我的项目中使用此代码?
NSArray *searchPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentFolderPath = [searchPaths objectAtIndex:0];
NSString *dbFilePath = [documentFolderPath stringByAppendingString:DATABASENAME];
NSFileManager *fm = [NSFileManager defaultManager];
BOOL isExist = [fm fileExistsAtPath:dbFilePath];
if (!isExist)
NSString *backupDbPath = [[[NSBundle mainBundle]resourcePath]stringByAppendingString:DATABASENAME];
[fm copyItemAtPath:backupDbPath toPath:dbFilePath error:nil];
【问题讨论】:
试试这个链接***.com/questions/24826352/… 它不起作用.....当我创建数据库文件时,模拟器和 iPhone 有什么区别? 【参考方案1】:第一次使用或文档目录下不存在数据库文件,需将数据库文件复制到文档目录:
-(void)copyDatabaseIntoDocumentsDirectory
// Check if the database file exists in the documents directory.
NSString *destinationPath = [self.documentsDirectory stringByAppendingPathComponent:self.databaseFilename];
if (![[NSFileManager defaultManager] fileExistsAtPath:destinationPath])
// The database file does not exist in the documents directory, so copy it from the main bundle now.
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:self.databaseFilename];
NSError *error;
[[NSFileManager defaultManager] copyItemAtPath:sourcePath toPath:destinationPath error:&error];
// Check if any error occurred during copying and display it.
if (error != nil)
NSLog(@"%@", [error localizedDescription]);
参考:http://www.appcoda.com/sqlite-database-ios-app-tutorial/
【讨论】:
【参考方案2】:您无法访问 iPhone 或 iPad 的目录。所以即使你成功创建了一个数据库,你也不会看到它。你可以通过从中读取数据来判断它的存在。
【讨论】:
以上是关于当我使用 iPhone 运行项目时如何在 iOS 中使用 sqlite的主要内容,如果未能解决你的问题,请参考以下文章