首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于XLForm比较的NSDate谓词

用于XLForm比较的NSDate谓词
EN

Stack Overflow用户
提问于 2015-12-04 16:34:44
回答 1查看 198关注 0票数 1

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

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

下面是用于设置用户不到18岁时需要隐藏的行的代码

代码语言:javascript
复制
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(881190000.000000,"NSDate")“,而self.sectionDescriptor是零,因为self.sectionDescriptor也是零。

下面是@catch块中NSException的描述:

在绑定{}中无法获得“生日”的值。

谢谢你的帮助\o

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-07 11:50:54

通过绕过问题,我找到了解决问题的办法。

我夸大了这种方法

代码语言:javascript
复制
- [id<XLFormDescriptorDelegate> formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue];

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

如果有人被困在同样的问题上,我认为这个解决方案很好,安装起来不费时间(不需要NSPredicate,也不需要regex技能,只需要一种重写方法),也不太脏(代码是可读的,解决方案不是什么大窍门):

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34093058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档