共享核心数据 - 我缺少什么?

时间:2017-04-03 13:30:19

标签: ios swift core-data share ios-app-group

我有一个带有今日扩展程序的应用。使用应用程序组,我可以为应用程序和扩展程序提供单个存储库。但是,我必须遗漏一些东西,因为解决方案只是部分有效。如果我在App中,我可以添加一条记录,并在小部件中看到相同的记录。但是,如果更改列的值,例如,将布尔值设置为true为false。如果在扩展程序中进行了更改,应用程序将无法看到更改,反之亦然。我将更改保存到Core Data:

_record?.managedObjectContext?.save()

使用数据库浏览器,我可以验证是否已进行更改;是在DB中。显然,我错过了一些东西。任何想法,将不胜感激。

1 个答案:

答案 0 :(得分:0)

确保你在双方都使用相同的数据库

- (void)viewDidLoad {
    [super viewDidLoad];

    if ([self.extensionContext respondsToSelector:@selector(setWidgetLargestAvailableDisplayMode:)]) { // iOS 10+
        [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];
    } else {
        self.preferredContentSize = CGSizeMake(0, 110.0); // iOS 10-
    }

    [MagicalRecord setupCoreDataStackWithAutoMigratingSqliteStoreAtURL:[MagicalRecord urlAppGroupStore]];
}

正如你所看到我正在使用魔法记录,但我指定使用共享sqlite文件

NSString *const kAppGroupIdentifier = @"group.com.carlosduclos.myapp";

+ (NSURL *)urlAppGroupStore {
    NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:kAppGroupIdentifier];
    return [groupURL URLByAppendingPathComponent:@"mydb.sqlite"];
}