Objective c NSDate比较的XLForm谓词
我正在使用内联日期选择器选择日期(dd/mm/yyyy)。这是生日,如果日期小于[NSDate date]减去18年,我必须显示一个表格行 我完全在努力使用谓词来显示或隐藏行:x 下面是我用来设置如果用户未满18岁,我需要隐藏的行的代码Objective c NSDate比较的XLForm谓词,objective-c,nsdate,nspredicate,xlform,Objective C,Nsdate,Nspredicate,Xlform,我正在使用内联日期选择器选择日期(dd/mm/yyyy)。这是生日,如果日期小于[NSDate date]减去18年,我必须显示一个表格行 我完全在努力使用谓词来显示或隐藏行:x 下面是我用来设置如果用户未满18岁,我需要隐藏的行的代码 XLFormRowDescriptor *row = [XLFormRowDescriptor formRowDescriptorWithTag:kAuthorization rowType:MyXLFormDescriptionTypeCheck title:
XLFormRowDescriptor *row = [XLFormRowDescriptor formRowDescriptorWithTag:kAuthorization rowType:MyXLFormDescriptionTypeCheck title:@"Parents authorization"]];
row.hidden = [NSString stringWithFormat:@"$%@.value >= CAST(%f, 'NSDate')", kDateOfBirth, [eighteenYearsAgo timeIntervalSince1970]];
[section addFormRow:row];
当我运行应用程序时,断点会在xlformrowsdescriptor.m处停止执行(第342行)
其中:
self是实际的行,
_隐藏等于“$birth.value>=CAST(881190000.000000,“NSDate”)”
而self.sectionDescriptor.formDescriptor.allRowsByTag为零,因为self.sectionDescriptor也为零
下面是@catch块中NSException的描述:
无法在绑定{}中获取“生日”的值
感谢您的帮助\o我找到了一个解决方案,绕过了这个问题 我重写了这个方法
- [id<XLFormDescriptorDelegate> formRowDescriptorValueHasChanged:(XLFormRowDescriptor *)formRow oldValue:(id)oldValue newValue:(id)newValue];
-[id formRowDescriptorValueHasChanged:(XLFormRowDescriptor*)formRow oldValue:(id)oldValue newValue:(id)newValue];
因此,当行的值发生更改时,我会收到通知。我只是在这里进行比较,根据结果隐藏或显示我想要的行
如果有人被困在同一个问题上,我认为这个解决方案很好,安装起来不需要花费太多时间(不需要NSPredicate或regex技能,只需要一个重写方法),也不太脏(代码可读,解决方案不是什么大把戏):)