美文网首页
如何用KVO观察对象的子对象的属性变化

如何用KVO观察对象的子对象的属性变化

作者: sfandy | 来源:发表于2018-08-17 17:59 被阅读8次

如何用KVO观察对象的子对象的属性变化?
KVO观察多级对象属性变化

#import <Foundation/Foundation.h>
@interface LKPerson : NSObject

@property (nonatomic,copy) NSString *uid;
@property (nonatomic,copy) NSString *name;
@property (nonatomic,copy) NSString *age;

@end

#import "LKPerson.h"
@implementation LKPerson

@end


#import <Foundation/Foundation.h>
#import "LKPerson.h"

@interface LKHomeModel : NSObject

@property (nonatomic, copy) LKPerson *person;

@end

#import "LKHomeModel.h"

@implementation LKHomeModel

- (instancetype)init
{
    self = [super init];
    if (self) {
        _person = [LKPerson new];
    }
    return self;
}

 ///关联person对象的属性变化
+ (NSSet<NSString *> *)keyPathsForValuesAffectingValueForKey:(NSString *)key{
   NSSet *keySet = [super keyPathsForValuesAffectingValueForKey:key];
   if ([key isEqual:@"person"]) {
       NSSet *set = [NSSet setWithObject:@"_person.age"];
       keySet = [keySet setByAddingObjectsFromSet:set];
    }
    return keySet;
}

@end

 //控制器中
 - (void)viewDidLoad {
    [super viewDidLoad];

    _homeModel = [LKHomeModel new];
    _homeModel.person.age = @"000";

    [_homeModel addObserver:self forKeyPath:@"person" options:NSKeyValueObservingOptionNew context:nil];

    _homeModel.person.age = @"111";
}

- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSKeyValueChangeKey,id> *)change context:(void *)context{

      NSLog(@"%@",change);
      NSLog(@"person.age === %@",_homeModel.person.age);

 }

相关文章

  • 如何用KVO观察对象的子对象的属性变化

    如何用KVO观察对象的子对象的属性变化?KVO观察多级对象属性变化

  • kvo与kvc

    kvo:key value observing 键值观察机制 通过kvo检测对象属性值的变化。每次被观察的对象的属...

  • KVO-容器类的观察

    1.KVO对Array的观察。 我们平时对于对象的属性进行KVO的观察时,都是需要观察变化的对象调用addObse...

  • KVO的原理 && KVC

    KVO kvo 即键值观察 观察一个对象的属性的变化,并在改变时接收到事件kvo是如何监听属性变化的呢 首先要注册...

  • KVO

    KVO 简介 KVO 键值观察机制,就是观察指定对象的指定属性变化情况。 KVO 键值观察 依赖于 KVC 健值编...

  • iOS KVC和KVO

    kvc:使用字符串直接访问对象的属性,或者给对象属性赋值 kvo:键值观察机制,它提供了观察对象属性变化的方法 K...

  • 2.4 KVO设计模式(监听对象属性的变化)

    KVO设计模式(监听对象属性的变化) BOSS类 KVO设计模式(监听对象属性的变化).png

  • KVO的发现

    1.什么是KVO KVO (key value observer) 观察者模式, 监听对象属性的变化 2.KVO的...

  • iOS KVO、KVC的使用和探究

    一、KVO KVO 的作用: kvo 就是监听某个对象的属性,在该属性的值发生变化时,通知观察者。 KVO 的简单...

  • 观察者模式-KVO详解

    KVO不像通知机制那样通过一个通知中心通知所有观察者对象,而是在对象属性变化时通知会被直接发送给观察者对象.KVO...

网友评论

      本文标题:如何用KVO观察对象的子对象的属性变化

      本文链接:https://www.haomeiwen.com/subject/qnetiftx.html