gpt4 book ai didi

cocoa - 提示用户登录以获取加密文档

转载 作者:行者123 更新时间:2023-12-03 17:16:21 25 4
gpt4 key购买 nike

我有加密的文档。取消归档每个文档后,我需要提示用户从登录表中输入文档密码。我有办法根据文件内容验证密码输入(这部分已完成)。如果密码不正确,文档将被关闭。如果密码正确,文档窗口将显示文档内容。

当我尝试在文档的 windowControllerDidLoadNib 方法中加载登录表(通过其 Controller )时,出现无法识别的选择器错误,如下所示:

- (void)windowControllerDidLoadNib:(NSWindowController *)aController
{
[super windowControllerDidLoadNib:aController];

if (!newPasswordController){
newPasswordController = [[NewPasswordController alloc] init];
newPasswordSheet = [newPasswordController window];
}
[NSApp beginSheet:newPasswordSheet modalForWindow:[self window]
modalDelegate:self
didEndSelector:@selector(didNewPasswordEnd:returnCode:contextInfo:)
contextInfo:nil];

}

[_NSControllerObjectProxy copyWithZone:]: unrecognized selector sent to instance

方法[NewPasswordController init]实现如下:

-(id)init
{
self = [super initWithWindowNibName:@"NewPassword"];
if (self) {
}
return self;
}

其中登录表 nib 文件名为 NewPassword

我想知道出了什么问题。解决这个问题的最佳方法是什么?

最佳答案

除了无法识别的选择器问题(我将其留给Apple)之外,我设法解决了原始问题提示用户登录加密文档,这就是解决方案。

请注意,每个文档都受密码保护,并且它们可能会响应不同的密码(因此问题不是“受密码保护的应用程序”,而是“受密码保护的文档”)。

当我们要读取文档内容时,只需注入(inject)以下代码即可弹出应用程序模态窗口来验证文档密码:

- (BOOL)readFromData:(NSData *)data 
ofType:(NSString *)typeName
error:(NSError **)outError
{
PasswordController *passwordController = [[PasswordController alloc] init];
NSWindow *passwordSheet = [passwordController window];

NSApplication* app = [NSApplication sharedApplication];
NSInteger iret = [app runModalForWindow:passwordSheet];
NSLog(@"password dialog returned = %ld", iret);
if (iret != 0)
{
[app stop:self];
return NO;
}
[passwordController release];
...

第一次以dataOfType保存文档时,您还可能会弹出另一种窗口,强制用户设置文档的密码。

此问题现已得到解答。

关于cocoa - 提示用户登录以获取加密文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5620234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com