用于NSDate比较的XLForm谓词



我正在使用内联日期选择器来选择日期(dd/mm/yyyy)。这是一个出生日期,如果日期小于[NSDate日期]减去18年,我必须显示一个表格行。

我完全在为显示或隐藏行的谓词而挣扎:x

如果用户年龄小于18岁,这是我用来设置需要隐藏的行的代码

XLFormRowDescriptor *row = [XLFormRowDescriptor formRowDescriptorWithTag:kAuthorization rowType:MyXLFormDescriptionTypeCheck title:@"Parents authorization"]];
row.hidden = [NSString stringWithFormat:@"$%@.value >= CAST(%f, 'NSDate')", kDateOfBirth, [eighteenYearsAgo timeIntervalSince1970]];
[section addFormRow:row];

当我运行应用程序时,一个断点会停止XLFormRowDescriptor.m(第342行)的执行

其中:self是实际的行,_hidden等于"$birthday.value>=CAST(88119000.000000,"NSDate")"和self.sectionDescriptor.formDescriptor.allRowsByTag为零,因为self.section Descriptor也为零

以下是@catch-block:中NSException的描述

无法在绑定{}中获取"生日"的值。

感谢您对的帮助

我找到了一个绕过问题的解决方案。

我高估了的方法

- [id<XLFormDescriptorDelegate> formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue];

这样,当行的值发生更改时,我就会收到通知。我只是在这里进行比较,并根据结果隐藏或显示我想要的行。

如果有人遇到同样的问题,我认为这个解决方案很好,安装起来时间不贵(不需要NSPredicate或regex技能,只需要一个方法来覆盖),而且不太脏(代码可读,解决方案不是什么大技巧):)

相关内容

  • 没有找到相关文章

最新更新