如何验证 Cocoa 中逆变换输入字段的值?
场景:
- 两个文本输入字段
FieldA
和FieldB
- 值存储在单个变量
Var
中, FieldA
的值可以是从FieldB
的值派生,反之亦然(想想 C 与 F)- 定义了一个值转换器,可以从
A
转换为B
,并且从B
反向转换为A
。 FieldA
通过对象控制器绑定到Var
(模型键路径指向Var
)FieldB
也绑定到Var
(mop 设置为Var
),而且还定义了 Value Transformer。
所以这很好用。如果我在 FieldA
中输入内容,FieldB
就会更新,如果我在 FieldB
中输入内容,FieldA
就会更新因此。
现在我想做一些现场验证工作。所以我:
- 定义
validateVar
- 在IB的
FieldA
上勾选立即验证
到目前为止一切顺利。如果我在 FieldA
中输入垃圾,validateVar
将返回 NO
并且我会收到一条不错的错误消息。
$1M 的问题是,如何在 FieldB
更改后对其进行验证?
我不能(真的)依赖 B
转换为 A
的事实,如果 A
无效,我会收到一条消息。
我的想法是在反向值转换函数中进行验证并返回超出 validateVar 范围的内容,但我认为这不是很好。
有没有办法做类似 validateFieldB
的事情?
附言。 validateVar
使用来自 FieldB
的反向转换值进行调用,因此有效地将 FieldB
转换为 FieldA
值,然后< code>FieldA 调用验证函数。
聚苯硫醚。 OS X 狮子。 Xcode 4.1。
Scenario:
- Two text input fields
FieldA
andFieldB
- Value is stored in a single variable
Var
- Value of
FieldA
can be derived from the value ofFieldB
and vice versa (think C vs F) - There is a Value Transformer defined that converts from
A
toB
and also reverse converse fromB
toA
. FieldA
is bound toVar
via Object Controller (model key path is pointing toVar
)FieldB
is also bound toVar
(mop is set toVar
), but also has Value Transformer defined.
So this works fine. If I type in something in FieldA
, FieldB
gets updated and if I type something in FieldB
, FieldA
gets updated accordingly.
Now I want to do some field validation work. So I:
- Define
validateVar
- Tick validates immediately in the IB on
FieldA
So far so good. If I type in rubbish in FieldA
, validateVar
returns NO
and I get a nice error message.
$1M question is, how do I validate the FieldB
after it has changed?
I cannot (really) rely on the fact that B
converts to A
and if A
is invalid I get a message.
My thinking is to do the validation in the reverse value transform function and return something that falls out of the validateVar
range, but I think this isn't very nice.
Is there a way to do something like validateFieldB
?
PS. validateVar
gets called with reverse transformed value from FieldB
, so effectively the FieldB
is transformed to FieldA
value and then FieldA
calls the validation function.
PPS. OS X Lion. XCode 4.1.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论