我有一个带有今日扩展程序的应用。使用应用程序组,我可以为应用程序和扩展程序提供单个存储库。但是,我必须遗漏一些东西,因为解决方案只是部分有效。如果我在App中,我可以添加一条记录,并在小部件中看到相同的记录。但是,如果更改列的值,例如,将布尔值设置为true为false。如果在扩展程序中进行了更改,应用程序将无法看到更改,反之亦然。我将更改保存到Core Data:
_record?.managedObjectContext?.save()
使用数据库浏览器,我可以验证是否已进行更改;是在DB中。显然,我错过了一些东西。任何想法,将不胜感激。
答案 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"];
}