gpt4 book ai didi

ios - 使用 ReactiveCocoa 查看验证

转载 作者:行者123 更新时间:2023-11-29 00:44:01 25 4
gpt4 key购买 nike

我有一个带有自定义单元格的表格 View ,其中包含 4 个文本字段和一个更新按钮。我在表格 View 中显示来自网络服务的数据。当任何一个文本字段为空时,UPDATE 按钮应该被隐藏。

MODEL 具有以下属性,可映射到每个单元格中的 4 个文本字段

@interface ClaimRequestModel : JSONModel 

@property (strong, atomic) NSString <Optional> *id;
@property (strong, atomic) NSString <Optional> *trip_id;
@property (strong, atomic) NSString <Optional> *item;
@property (strong, atomic) NSString <Optional> *name;
@property (strong, nonatomic) NSString <Optional> *description;
@end

我尝试在 TableViewController 中的属性“名称”上创建 RACSignal 为

- (void)viewDidLoad {
[savedClaims enumerateObjectsUsingBlock:^(ClaimRequestModel *claim, NSUInteger idx, BOOL * _Nonnull stop) {
[claimSignals addObject:RACObserve(claim, name)];
}];
enableCostSignal = [RACSignal combineLatest:costSignals];
[self setupClaimTypeSignal:[RACSignal combineLatest:claimSignals]];
// [self.tableView reloadData];

}
-(void)setupClaimTypeSignal:(RACSignal*) signal {
[[signal map:^id(RACTuple *values) {
for (NSString *string in values) {
if ([string isEmpty]) {
return @(NO);
}
}
return @(YES);
}] subscribeNext:^(id x) {
self.validInput = [x boolValue];
}];

}

它适用于一个属性“名称”,我想观察 ClaimRequestModel 中的所有属性。

我是否需要为每个属性创建多个信号数组?如果是这样,如果模型具有超过 15 个属性怎么办?

有人可以帮助我使用 ReactiveCocoa 的最佳实践吗?

最佳答案

可能您需要在 cellForRowAtIndexPath 中添加信号以检查条件。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

ClaimRequestCell *cell = [[[UINib nibWithNibName:@"ClaimRequestCell" bundle:nil] instantiateWithOwner:nil options:nil] firstObject];

cell = [tableView dequeueReusableCellWithIdentifier:cell.reuseIdentifier];

ClaimRequestModel *claim = [savedClaims objectAtIndex:indexPath.row];

RACSignal *valid = [RACSignal
combineLatest:@[[RACObserve(claim, name) ignore:nil], [RACObserve(claim, item) ignore:nil],[RACObserve(claim, trip_id) ignore:nil] ]
reduce:^(NSString *name, NSString *item, NSString *trip_id ) {
return @([name length] == 0 && [item length] == 0 && [trip_id length] == 0);
}];

RAC(cell.updateButton, enabled) = valid;

return cell;
}

希望对您有所帮助。

关于ios - 使用 ReactiveCocoa 查看验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38852834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com