如何验证 Cocoa 中逆变换输入字段的值?

发布于 2024-12-02 14:59:07 字数 1288 浏览 3 评论 0原文

场景:

  • 两个文本输入字段 FieldAFieldB
  • 值存储在单个变量 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 and FieldB
  • Value is stored in a single variable Var
  • Value of FieldA can be derived from the value of FieldB and vice versa (think C vs F)
  • There is a Value Transformer defined that converts from A to B and also reverse converse from B to A.
  • FieldA is bound to Var via Object Controller (model key path is pointing to Var)
  • FieldB is also bound to Var (mop is set to Var), 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文