ios - 核心数据应用组同步(带扩展)

标签 ios core-data ios8-today-widget

我们的iOS应用中的小部件是自定义的,因此我添加了一项功能以删除小部件的一部分。为了保存小部件等的设置,我们的小部件通过App组共享核心数据。但是,当我从小部件中删除某些内容时,它似乎始终无法正确同步。这主要是在应用程序在内存中处于 Activity 状态时发生的。

当我删除某些内容时,我将其称为:

-(void)removeWidgetFromUser:(UserModel *)user Widget:(Widget *)widget{
    if(widget != nil){
        [widgetContext deleteObject:widget];

        NSError *error;
        if (![widgetContext save:&error]) {
            NSLog(@"Unable to remove widget %@", error);
        }
    }
}

然后,我使用wormhole来同步我的应用程序中的核心数据,它将此称为:
-(void)updateCoreData{
    [self.managedObjectContext refreshAllObjects];
}

我确信这两种方法都会被调用。但是有时应用程序会看到我刚刚删除的小部件,然后它也恰好重新出现在我的小部件中。

编辑:
我认为发生的事情是我的应用程序中的CoreData上下文未正确更新,然后该小部件实际上与我的应用程序中的CoreData同步。因此,删除的窗口小部件会在一段时间后重新出现。仍在弄清楚...

最佳答案

我终于做到了。通过实现以下代码:

- (id)initWithCoder:(NSCoder *)decoder {
    NSManagedObjectContext *context = [SharedCoreDataObjects sharedInstance].managedObjectContext; // use your NSManagedObjectContext
    NSPersistentStoreCoordinator *coordinator = [SharedCoreDataObjects sharedInstance].persistentStoreCoordinator; //use your NSPersistentStoreCoordinator
    NSURL *url = (NSURL *)[decoder decodeObjectForKey:@"URIRepresentation"];
    NSManagedObjectID *managedObjectID = [coordinator managedObjectIDForURIRepresentation:url];
    self = [context existingObjectWithID:managedObjectID error:nil];
    return self;
}

- (void)encodeWithCoder:(NSCoder *)encoder {
    [encoder encodeObject:[[self objectID] URIRepresentation] forKey:@"URIRepresentation"];
}

在我的NSManagedObjects中,我可以使用MMWormhole发送NSManagedObjectContextDidSaveNotification到应用程序,然后调用
[context mergeChangesFromContextDidSaveNotification:messageObject];

让上下文合并更改。目前看来,这很完美!

关于ios - 核心数据应用组同步(带扩展),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35648578/

相关文章:

objective-c - 如何本地化 iOS 8 今天的扩展小部件以及小部件名称

ios - 无法在支持 SIMD/NEON 的 Xcode 5/Clang 工具链上为 iOS 编译 libjpeg-turbo

ios - 是否可以通过编程方式禁用 iOS 7 中的控制中心,如果不能,有什么替代方法?

ios - TextInput react native 显示带有颜色背景的文本值

ios - 使用自动布局指定动态通知中心小部件高度

ios - 今日 View 小部件中的透明文本颜色

ios - UICollectionView 高度的动画看起来很奇怪,单元格缩小

ios - Core Data 为单个属性过滤结果并设置一个 UILabel 的文本

iphone - 在提高性能的获取请求模板下发生了什么?

ios - 通过检测版本进行 coredata 自定义迁移