0

我已閱讀此帖子Core Data with mutiple sqlite files和其他一些。如何用自己的模型創建單獨的sqlite文件

但是找不到任何關於創建分離的sqlite文件的可理解的信息(例如爲不同的用戶存儲一些數據)。這就是我在做什麼:

- (NSPersistentStoreCoordinator *)persistentStoreCoordinator 
{ 
    if (__persistentStoreCoordinator != nil) 
    { 
     return __persistentStoreCoordinator; 
    } 
    NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:[NSString stringWithFormat:@"%@.sqlite", _userID]]; 


    __persistentStoreCoordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]]; 
    NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys: [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil]; 

    NSError *error = nil; 
    if (![__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) { 
     NSLog(@"Unresolved error %@, %@", error, [error userInfo]); 
     abort(); 
    } 
    return __persistentStoreCoordinator; 
} 

- (NSManagedObjectModel *)managedObjectModel { 
    if (__managedObjectModel != nil) { 
     return __managedObjectModel; 
    } 

    NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DataBase" withExtension:@"momd"]; 
    __managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
    return __managedObjectModel; 
} 

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

    NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator]; 

    if (coordinator != nil) 
    { 
      __managedObjectContext = [[NSManagedObjectContext alloc] init]; 
      [__managedObjectContext setPersistentStoreCoordinator:coordinator]; 
    } 
    return __managedObjectContext; 
} 

如果您更改用戶也改變NSPersistentStoreCoordinatorNSManagedObjectContextNSManagedObjectModel - 不(有NSFetchRequest)。那麼如何爲不同的用戶分離核心數據(包括自身數據和「獲取請求」)而不創建額外的實體(如用戶)呢?

回答

0

也許你可以使用多個上下文與他們自己的商店,但基於相同的數據模型。通過這種方式,您可以爲不同的商店使用相同的實體。

+0

它應該是什麼樣子? – 2012-08-05 13:08:49

+0

就像在你的代碼中一樣,只有幾次:persistenStoreCoordinator1,managedObjectContext1; persistenStoreCoordinator2,managedObjectContext2;等 – Mundi 2012-08-05 16:47:34

+0

你讀過我寫的東西嗎? 你不理解我,我想......我不需要一次購買多個商店!我不需要任何1,2,3 ...變量!因爲隨時會發布persistenStoreCoordinator和managedObjectContext並用不同的'storeURL'產生。即一個用戶輸入(用他的storeURL)並註銷,然後輸入另一個用戶(與其他storeURL)。我需要分開他們的數據 – 2012-08-06 22:36:04

相關問題