iOS

iOS-KVC(六)正确性验证

2019-06-23  本文已影响0人  厦门_小灰灰

iOS-KVC(一)基本使用
iOS-KVC(二)内部赋值深层次原理
iOS-KVC(三)内部取值深层次原理
iOS-KVC(四)常见异常处理
iOS-KVC(五)容器类
iOS-KVC(六)正确性验证
iOS-KVC(七)字典相关
iOS-KVC(八)常见使用

KVC提供了属性值,用来验证key对应的Value是否可用的方法。

- (BOOL)validateValue:(inout id _Nullable * _Nonnull)ioValue forKey:(NSString *)inKey error:(out NSError **)outError;

- (BOOL)validateValue:(inout id _Nullable * _Nonnull)ioValue forKeyPath:(NSString *)inKeyPath error:(out NSError **)outError;

该方法的工作原理:

简单示例:

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic, copy) NSString *name;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSError *error = nil;
    NSString *value = @"hui";
    BOOL result = [self validateValue:&value forKey:@"name" error:&error];
    
    if ( error ) {
        NSLog(@"error = %@", error);
    }
    
    if ( result ) {
        NSLog(@"validate success");
    } else {
        NSLog(@"validate failure");
    }

}

-(BOOL)validateName:(id *)value error:(out NSError * _Nullable __autoreleasing *)outError
{
    NSString *name = *value;
    
    if ( [name isEqualToString:@"hui"] ) {
        return YES;
    }
    
    return NO;
}


@end

结果:
2019-06-23 15:06:24.132692+0800 study[10997:159723] validate success

由于我们实现了-validateName: error:的方法,所以就在这里进行值value有效性的判断。

上一篇下一篇

猜你喜欢

热点阅读