Swift - 无法从 UITextField 获取真实文本 - 改为获取 NCISr 结果

TJ *_*her 8 ios swift swift5

我有一个 UITextField,在我的故事板中选中了“安全文本输入”。

当我将 UITextField.text 属性的文本分配给变量时,我得到的值是:

类名 = _NSClStr

而不是文本的实际值:

A B C D

如果我取消选中情节提要中的“安全文本输入”并对变量进行相同的分配,我会得到实际的文本。

分配值的代码非常简单:

passFieldText = self.passField.text!
Run Code Online (Sandbox Code Playgroud)

启用安全条目时的调试器输出:

(lldb) print passFieldText
(String) $R0 = class name = _NSClStr
Run Code Online (Sandbox Code Playgroud)

禁用安全输入时的调试器输出:

(lldb) print passFieldText
(String) $R0 = "ABCD"
Run Code Online (Sandbox Code Playgroud)

我什至尝试使用局部变量而不是类变量:

let passFieldText = self.passField.text ?? ""
Run Code Online (Sandbox Code Playgroud)

结果一样!

(lldb) print passFieldText
(String) $R0 = class name = _NSClStr
Run Code Online (Sandbox Code Playgroud)

passFieldText 被传递到另一个函数以验证密码,并且在该另一个函数中它还显示类名 = _NSClStr的值

我缺少什么?

干杯!

TJ *_*her 0

所以我的问题的原因不是密码字段中的文本。事实证明这是外部服务的问题。

但是,为了帮助其他人查看代码中密码字段的实际值,我将分享 Dominik 105 的建议以及我如何实现它。

要查看密码字段的值,如果我将 PRINT 放入代码 ,我会看到密码字段的实际值。

print("password1: \(self.passField.text ?? "")")
Run Code Online (Sandbox Code Playgroud)

给了我我期望的结果

ABCD
Run Code Online (Sandbox Code Playgroud)

如果我在调试器输出中执行相同的 PRINT,我会看到 _NSClStr 的东西。