NSSecureTextField stringValue始终为“(null)”

时间:2013-02-10 03:51:25

标签: objective-c cocoa nstextfield

我有一个包含属性myUsernamemyPassword的User类,我希望UI中的文本字段将字符串值传递给名为link的AppDelegate方法,后者执行一些后台操作NSTask事物和用户对象的方法setUserCredentials

但是,使用NSSecureTextField检索密码然后将其传递给NSLog以验证是否始终打印(null)到屏幕? 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的全新。无法在文档中找到任何内容或搜索此内容。安全字段应该与常规字段相同,除了它可以防止复制,剪切和粘贴以及查看字符串(或者我阅读)。

如何获取密码值?

1 个答案:

答案 0 :(得分:1)

Interface Builder中存在一个问题,偶尔插座无法正常连接,通常导致插座无效。如果你在一个nil对象上调用stringValue,它将只返回nil(在控制台中显示为(null)。

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

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

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

我很欣赏最后一个建议可能看起来有点奇怪,如果向下看起来很奇怪,但我已经看过几次这个问题了,而且之前已经解决了这个问题。

希望其中一些有用。