我一直在試圖確定一種優雅的方式來處理在iOS上使用CoreData來實現設計,類似於處理多個文檔。在iOS上使用CoreData來處理類似多個文檔文檔
作爲背景,我有一個培訓應用程序,我希望支持應用程序內購買培訓課程。這些文件可能是一組包含.sqlite
和一些支持媒體文件的文件,這些文件在下載後會在App Library文件夾中的CourseName
子文件夾中結束。
我希望能夠支持在我的應用程序的根級別的表中列出所有Coursenames
,並根據用戶選擇哪一個進行切換。
我的直覺是我可以將Store切換到合適的sqlite。
NSString *sqliteFileForCourseName = [self sqliteFileForCourseName];
storeURL = [[self applicationLibraryDirectory] URLByAppendingPathComponent:sqliteFileForCourseName];
if(!__persistentStoreCoordinator)
__persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error])
// handle error
我認爲這將是一個管理[persistentStoreCoordinator persistentStores]
中的項目的問題。
我不確定這是否是正確的級別(多個Persistent Stores)來處理該功能,或者它是否可以在NSManagedObjectContext級別完成。
我可以與課程是隻讀的,當他們從庫文件夾加載,如果它簡化了事情有一個可寫的商店和多個只讀存儲生活(也許NSInMemoryStoreType
?)
感謝您的回覆。我的應用程序已經在使用CoreData編寫和閱讀sqlite。因此,生成包含sqlite和支持媒體文件的Bundle非常簡單。我試圖找到阻力最小(或最少編碼)在這些Bundle中的sqlite文件之間切換的路徑。 –
啊,我的回答並沒有太大的幫助呢!抱歉!我不會嘗試同時加載所有的商店,我不知道這將如何工作:(每次用戶選擇文檔時,我都會創建一個新的持久存儲區。但是,沒有理由說明爲什麼該方法你建議在你的問題不會工作:) – deanWombourne