【问题标题】:Shared Core Data - What am I missing?共享核心数据——我错过了什么?
【发布时间】:2017-04-03 13:30:19
【问题描述】:

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

_record?.managedObjectContext?.save()

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

【问题讨论】:

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


    【解决方案1】:

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

    - (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"];
    }
    

    【讨论】:

    • 我能够同时获取应用程序和小部件以使用应用程序组查看共享数据库。但相反的观点只看到增删改查。
    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-04
    相关资源
    最近更新 更多