react-native-navigation的迁移库

RNNOptions.m 861B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #import "RNNOptions.h"
  2. @implementation RNNOptions
  3. -(instancetype)initWithDict:(NSDictionary *)dict {
  4. self = [super init];
  5. [self mergeWith:dict];
  6. return self;
  7. }
  8. - (void)applyOn:(UIViewController *)viewController defaultOptions:(RNNOptions *)defaultOptions {
  9. [defaultOptions applyOn:viewController];
  10. [self applyOn:viewController];
  11. }
  12. -(void)mergeWith:(NSDictionary *)otherOptions {
  13. for (id key in otherOptions) {
  14. if ([self hasProperty:key]) {
  15. [self setValue:[otherOptions objectForKey:key] forKey:key];
  16. }
  17. }
  18. }
  19. -(void)mergeIfEmptyWith:(NSDictionary *)otherOptions {
  20. for (id key in otherOptions) {
  21. if ([self hasProperty:key] && ![self valueForKey:key]) {
  22. [self setValue:[otherOptions objectForKey:key] forKey:key];
  23. }
  24. }
  25. }
  26. - (BOOL)hasProperty:(NSString*)propName {
  27. return [self respondsToSelector:NSSelectorFromString(propName)];
  28. }
  29. @end