2013-10-20 107 views
0

我正在使用sqlite數據庫來存儲我的iPhone應用程序的數據。我知道這個sqlite文件的位置在Users/Leontien/Library/Application Support/iPhone Simulator/7.0/Applications/4ACB095B-D6B7-488F-AB18-27800A3386E4/Documents中。我的數據庫數據在哪裏(核心數據,iOS)

當我啓動應用程序時,我可以創建一些數據庫對象。我可以在tableview中看到創建的對象。當我停止並啓動我的應用程序時,它會顯示已創建對象的列表。所以我知道我的數據存儲在某個地方。

當我打開上面提到的路徑中的sqlite文件時,SQLite數據庫瀏覽器顯示一個完全空的數據庫(沒有表存在)。這不是我所期望的...

我在哪裏可以找到我的數據庫數據?

我在AppDelegate.m中使用了以下代碼,用於核心數據。

#pragma mark - Core Data stack 

- (NSManagedObjectContext *)managedObjectContext { 
    if (_managedObjectContext != nil) { 
     return _managedObjectContext; 
    } 

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 
    if (coordinator != nil) { 
     _managedObjectContext = [[NSManagedObjectContext alloc] init]; 
     [_managedObjectContext setPersistentStoreCoordinator:coordinator]; 
    } 
    return _managedObjectContext; 
} 


- (NSManagedObjectModel *)managedObjectModel { 
    if (_managedObjectModel != nil) { 
     return _managedObjectModel; 
    } 
    _managedObjectModel = [NSManagedObjectModel mergedModelFromBundles:nil]; 

    return _managedObjectModel; 
} 

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator { 
    if (_persistentStoreCoordinator != nil) { 
     return _persistentStoreCoordinator; 
    } 

    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"PetHealth.sqlite"]; 

    NSError *error = nil; 
    _persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 

    return _persistentStoreCoordinator; 
} 

回答

2

當我停下來,開始我的應用程序

你殺死在多任務菜單中選擇您的應用程序?如果是,則參見my answer here。這可能是你的問題的原因。 SQLite Manager是免費的,可以在iOS 7項目中正常工作。 SimPholders app也可能對此有所幫助。

+0

謝謝,我可以看到與SQLite管理器的數據。一個額外的問題:數據位於隱藏文件夾庫中。我可以在Finder中看到這個文件夾,但是當我在SQLite Manager中選擇一個文件時沒有看到。有沒有辦法改變這個?現在我在查看它們之前複製了這些文件... – Leontien

+0

sqlite數據瀏覽器停止爲我顯示數據,但SQLite管理器效果很好。 – mkc842

0

當你創建NSManagedObjects時你調用了ManagedObjectContext中的SAVE方法?

如果您在AppDelegate中的CoreDat堆棧試試這個:

AppDelegate* appDelegate = (AppDelegate*) [UIApplication sharedApplication].delegate; 

NSError* error = nil; 
[appDelegate.managedObjectContext save:&error] // Save the Context (Commit) 

如果你知道,嘗試使用MesaSQLite的Mac應用

0

看來你是在錯誤的目錄,並看錯你的數據庫版本。如果您更改包標識符,則模擬器中將包含多個應用程序,並且您將在Simulator中使用每個iOS版本的應用程序。

嘗試列出所有的應用程序對於安裝在模擬器這樣的給人的iOS版本:

cd /Users/username/Library/Application\ Support/iPhone\ Simulator/6.1/Applications 
ls -d */*.app 

現在,您可以驗證正確的路徑。通過用7.0代替上面的6.1,對iOS 7重複相同的操作。

此外,不要忘記打電話[self.managedObjectContext save:&error]堅持你的改變,但在你描述你應該已經在做這件事。