2-RACommand

RACommand

RACCommand 就是命令

    
    // RACCommand 就是命令
    // 0 创建一个CMD 穿进去一个用于构建RACSignal的Block参数来初始化RACommand
    RACCommand *cmd = [[RACCommand alloc]initWithSignalBlock:^RACSignal * _Nonnull(id  _Nullable input) {
        
        // 此处是cmd 执行的输入源
        NSLog(@"%@",input);
        // 创建一个信号 并且发送信号
        return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
            [subscriber sendNext:@"HelloFromCommand"];
            return nil;
        }];
    }];
	
    // 获取信号的发送者 监听信号
    [cmd.executionSignals subscribeNext:^(id  _Nullable x) {
        
        // 此处返回的是信号
        // <RACDynamicSignal: 0x600003963920> name:
        NSLog(@"%@",x);
        [x subscribeNext:^(id  _Nullable x) {
            // 此处打印的是信号发送的信息 HelloFromCommand
            NSLog(@"%@",x);
        }];
        
    }];
    
    // cmd 执行execute 方法 才会调用
    [cmd execute:@"555555"];


    // 用户名和密码长度大于6之后才能登陆
    // 下面两行代码是实时监听输入框的长度 去改变登录按钮的颜色
 
    [self.nameFiled.rac_textSignal subscribeNext:^(NSString * _Nullable x) {
        NSLog(@"%@",x);
        self.username = x;
        self.loginBtn.backgroundColor = [UIColor grayColor];
        if (self.username.length > 6 && self.password.length > 6 ) {
            self.loginBtn.backgroundColor = [UIColor redColor];
        }

    }];
    
    [self.passwordField.rac_textSignal subscribeNext:^(NSString * _Nullable x) {
        NSLog(@"%@",x);
        self.password = x;
        self.loginBtn.backgroundColor = [UIColor grayColor];
        if (self.username.length > 6 && self.password.length > 6 ) {
            self.loginBtn.backgroundColor = [UIColor redColor];
        }
        
    }];
    
    
    
    
    
    
    // 观察self.nameFiled.text
    // 用户名的信号
   RACSignal *usernameSignal = [RACObserve(self.nameFiled, text) map:^id _Nullable(NSString  * value) {
        if (value.length > 6 ) {
 
            return  @(YES);
        }else{
 
            return @(NO);
        }
    }];
    
    // 密码的信号
    RACSignal *passwordSignal = [RACObserve(self.passwordField, text) map:^id _Nullable(  NSString * value) {
        if (value.length > 6 ) {
            
            return @(YES);
            
        }else{
 
            return @(NO);
        }
    }];
    
    

    //信号的合并
    // combineLatest 是将数组中的信号合并成一个信号 只有当两个信号都成功发送的时候后面的代码才会执行
    // reduce 聚合:用于信号发出的内容时元组,把信号发出元组的值聚合成一个值

    RACSignal *loginSig = [RACSignal combineLatest:@[usernameSignal,passwordSignal] reduce:^id (NSNumber *username,NSNumber *pwd){
        // 返回的是0 或者 1
        // 只有都符合条件的话 信号才会发出去
        
        return @([username boolValue] && [pwd boolValue]);
    }];
    
    
    // 实例化command
    _loginCommand = [[RACCommand alloc]initWithEnabled:loginSig signalBlock:^RACSignal * _Nonnull(id  _Nullable input) {
        // 登录的操作
        return [RACSignal createSignal:^RACDisposable * _Nullable(id<RACSubscriber>  _Nonnull subscriber) {
            [subscriber sendNext:[NSString stringWithFormat:@"%@--%@",self.nameFiled.text,self.passwordField.text]];
            [subscriber sendCompleted];
            return nil;
        }];
        return nil;
    }];
    
    
    
    // 订阅信号
    [[self.loginCommand executionSignals]subscribeNext:^(RACSignal  * x) {
        
        [x subscribeNext:^(NSString * x) {
            //
            NSLog(@"x--%@",x);
        }];
    }];
    
    
    
    // 绑定按钮的command 事件
    
    self.loginBtn.rac_command = self.loginCommand;
锐角检测插件2.0是一款专为ArcGIS环境设计的功能扩展模块,主要用于识别并修正地理信息系统数据中存在的尖锐连接角。在地理信息处理过程中,线状要素的交接处若形成过小的夹角,可能引发数据完整性与分析可靠性的隐患。该工具通过集成自动化检测与处理机制,显著提升了空间数据的几何质量与可用性。 作为Esri公司ArcGIS软件体系的辅助组件,该插件能够与平台核心功能紧密融合,为用户提供流畅的操作流程。使用者无需具备编程知识,仅通过若干交互步骤即可完成对矢量线数据的角度筛查。 该工具的核心应用场景集中于线要素的几何连接点分析。当相邻线段交汇角度低于预设限值时,系统将自动标注该位置为潜在异常区域。此类几何问题常见于交通网络结点、水系交汇处等空间结构,可能对后续的拓扑分析、空间量算等操作产生干扰。 插件2.0版本具备以下主要特性: 1. **系统化扫描**:自动遍历所有线状要素,分析连接点几何特征,识别异常夹角。 2. **参数化配置**:支持用户根据数据规范自定义角度阈值,如设定临界值为89度。 3. **交互式展示**:检测结果通过可视化符号系统呈现,异常点位采用高亮标记便于辨识。 4. **批量化处理**:提供多种几何校正方案,可对异常角度进行批量调整与优化。 5. **文档化输出**:生成结构化检测报告,详细记录问题点位坐标与属性信息。 该工具采用开放式架构设计,允许技术人员访问其实现逻辑。这种设计为专业用户提供了定制化修改的可能性,可根据特定项目需求调整算法参数或扩展功能模块。 总体而言,锐角检测插件2.0通过优化空间数据的几何质量,有效增强了ArcGIS平台在处理复杂地理信息时的专业能力。其直观的操作界面与系统化的处理流程,使不同技术背景的地理信息工作者都能高效解决数据中的角度异常问题。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值