c_cpp 简单的NSManagedObject更新观察器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 简单的NSManagedObject更新观察器相关的知识,希望对你有一定的参考价值。

//
//  Copyright © 2013 Yuri Kotov
//

#import "ADVManagedObjectController.h"

@interface ADVManagedObjectController ()
@property (strong, nonatomic) NSManagedObject *object;
@end

@implementation ADVManagedObjectController

- (instancetype) initWithObject:(NSManagedObject *)object
{
    if ((self = [super init]))
    {
        _object = object;
        [self startNotifying];
    }
    return self;
}

- (void) startNotifying
{
    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(contextDidChange:)
                                                 name:NSManagedObjectContextObjectsDidChangeNotification
                                               object:self.object.managedObjectContext];
}

- (void) stopNotifying
{
    [[NSNotificationCenter defaultCenter] removeObserver:self
                                                    name:NSManagedObjectContextObjectsDidChangeNotification
                                                  object:self.object.managedObjectContext];
}

- (void) contextDidChange:(NSNotification *)notification
{
    if (self.handler)
    {
        NSSet *update = notification.userInfo[NSUpdatedObjectsKey];
        if ([update containsObject:self.object]) self.handler(self.object);
    }
}

- (void) dealloc
{
    [self stopNotifying];
}

@end
//
//  Copyright © 2013 Yuri Kotov
//

#import <Foundation/Foundation.h>

typedef void(^ADVManagedObjectHandler)(id object);

@interface ADVManagedObjectController : NSObject

@property (readonly, nonatomic) NSManagedObject *object;
@property (strong, nonatomic) ADVManagedObjectHandler handler;

- (instancetype) initWithObject:(NSManagedObject *)object;

@end

以上是关于c_cpp 简单的NSManagedObject更新观察器的主要内容,如果未能解决你的问题,请参考以下文章

从数据模型更新 NSManagedObject 类定义

将 NSManagedObject 的关系更改为不同的上下文

NSManagedObject 子类属性

知道 NSManagedObject 实例是新的并且尚未持久化的最简单方法是啥?

如何让我的简单对象符合 Swift 中的 NSManagedObject 和 NSCoding

自动生成的 NSManagedObject 中的属性