【问题标题】:Trying to share core data entity between apps尝试在应用程序之间共享核心数据实体
【发布时间】: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


    【解决方案1】:

    你应该使用共享包:

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

    而不是这个:

    [NSBundle mainBundle]
    

    【讨论】:

    • ManagedObjectModel 的数据模型在主包中..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多