2015-11-03 60 views
0

當我使用模擬器,我可以找到數據庫文件/文件。但是當我用我的iPhone運行項目如何使用iOS的sqlite的,我無法找到數據庫文件。 什麼時候應該創建數據庫文件或在我的項目中使用此代碼?當我使用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]; 
} 
+0

嘗試此鏈接http://stackoverflow.com/questions/24826352/why-a-database-hasnt-created/24826701#24826701 – karthikeyan

+0

它不工作.....當我創建模擬器和iPhone之間有什麼區別一個數據庫文件? – rayesquire

回答

0

第一次或數據庫文件中的文件目錄不存在,你必須複製數據庫文件到文件目錄:

-(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/

0

你可以用」 t訪問iPhone或iPad的目錄。所以即使你成功創建了一個數據庫,你也不會看到它。你可以通過讀取數據來判斷它的存在。

相關問題