【发布时间】:2016-10-20 15:07:14
【问题描述】:
我想在应用程序 A 中创建一个实体并将其保存到应用程序组共享空间中并在应用程序 B 中访问该实体。这是我目前的方法,我不是核心数据的主人,所以我确定我'我做错了什么,以下代码用于在应用程序 A 中创建实体并将其保存到共享区域。我没有收到任何错误,实体已成功创建
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];
商店总是零!如果有人有一些建议或帮助,那就太好了!
【问题讨论】:
标签: ios objective-c iphone core-data