1

我有一个带有属性的 User 类,myUsername并且myPassword我希望 UI 中的文本字段将字符串值传递给调用的 AppDelegate 方法link,该方法执行一些后台 NSTask 的操作,并传递给setUserCredentials用户对象的方法。

但是,使用 NSSecureTextField 检索密码,然后将其传递给 NSLog 以验证始终打印(空)到屏幕?NSTextField 工作正常。

[self.activeUser setMyUsername:self.myUsernameTextField.stringValue];
[self.activeUser setMyPassword:self.myPasswordSecureTextField.stringValue];
NSLog(@"Username: %@", self.activeUser.myUsername);
NSLog(@"Password: %@", self.activeUser.myPassword);

印刷:

2013-02-09 23:34:58.491 LabSync[25215:303] Username: jon
2013-02-09 23:34:58.491 LabSync[25215:303] Password: (null)

对 Obj-C、Cocoa 和 XCode 来说是全新的。在文档中找不到任何内容或对此进行搜索。安全字段应该与常规字段相同,只是它可以防止复制、剪切和粘贴以及查看字符串(或者我读过)。

如何获取密码值?

4

1 回答 1

1

Interface Builder 中存在一个问题,有时插座无法正确连接,通常会导致您的插座为零。如果您要在 nil 对象上调用 stringValue,它只会返回 nil(在控制台中显示为 (null))。

您可能需要首先检查插座是否在应用程序中注册,您可以通过以下方式进行:

NSLog(@"password field = %@", self.myPasswordSecureTextField);

将其放置在视图完成加载后将执行的某个位置。如果它显示为 null,则确保您已将文本字段实际连接到您的插座。如果你有,然后尝试建立一个新的插座,或重命名现有的插座,看看会发生什么。

我很欣赏最后一个建议可能看起来有点奇怪,如果是正确的奇怪的话,但我已经多次看到这个问题,并且之前已经修复过。

希望有些帮助。

于 2013-02-10T13:16:59.113 回答