当我使用 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的主要内容,如果未能解决你的问题,请参考以下文章

iOS:在真实设备上运行项目时出错

iOS iPhone 运行时不显示任何内容

unity-iPhone 上的黑色纹理仅适用于 iOS

如何在 Xcode 中选择 iOS 模拟器作为目标?

如何将我的应用程序放入 iPhone 3G?

iOS安全区域无法在真实设备上运行