2016-10-20 11 views
0

私はアプリケーションAでエンティティを作成し、それをアプリケーショングループの共有スペースに保存し、アプリケーションBのそのエンティティにアクセスしたいと考えています。これは私の現在のアプローチです。私は何か間違っていると確信しています、次のコードは、アプリケーションのエンティティを作成し、共有領域に保存するためです。私は、エラーを受信しないと、エンティティが正常にアプリケーション間でコアデータエンティティを共有しようとしています

NSError * error = nil; 

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DataModel" withExtension:@"momd"]; 
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 

NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom]; 
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 
[moc setPersistentStoreCoordinator:psc]; 

NSURL *storeURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"GROUP_IDENT"]; 
storeURL = [storeURL URLByAppendingPathComponent:@"sharedDB.sqlite"]; 
NSPersistentStore *store; 

store = [psc addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]; 

Report *report = [NSEntityDescription insertNewObjectForEntityForName:@"Report" inManagedObjectContext:moc]; 
report.categoryID = @"THIS IS A TEST"; 

if ([moc save:&error] == NO) { 
    NSAssert(NO, @"Error saving context: %@\n%@", [error localizedDescription], [error userInfo]); 
} 

を作成し、

NSError * error = nil; 

NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"DataModel" withExtension:@"momd"]; 
NSManagedObjectModel *mom = [[NSManagedObjectModel alloc] initWithContentsOfURL:modelURL]; 
NSAssert(mom != nil, @"Error initializing Managed Object Model"); 

NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:mom]; 
NSManagedObjectContext *moc = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType]; 
[moc setPersistentStoreCoordinator:psc]; 

NSURL *storeURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"GROUP_IDENT"]; 
storeURL = [storeURL URLByAppendingPathComponent:@"sharedDB.sqlite"]; 


NSError *error = nil; 
NSPersistentStore *store = [psc persistentStoreForURL:storeURL]; 



NSFetchRequest *request = [NSFetchRequest fetchRequestWithEntityName:@"Report"]; 
[request setEntity:[NSEntityDescription entityForName:@"Report" inManagedObjectContext:moc]]; 
[request setReturnsDistinctResults:YES]; 
NSArray * fetchedObjects = [moc executeFetchRequest:request error:&error]; 

店は常にnilで次のように他のアプリでこのデータにアクセスしようとしています!誰かがいくつかの提案や偉大な助けをしている場合!これに代えて

NSBundle *sharedBundle = [NSBundle bundleWithIdentifier:@"com.company.sharedName"]; 

答えて

0

あなたが共有バンドルを使用する必要があります

[NSBundle mainBundle] 
+0

ManagedObjectModelのためのデータモデルは、しかし、メインバンドルに..です – renners

関連する問題