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 中的属性