在cocoa应用程序中使用url方案创建一个新文档

时间:2014-06-27 00:37:34

标签: objective-c macos cocoa url-scheme

我在Mac cocoa应用程序中实现了自定义URL方案。它有效,但我有几个问题。

1)我在哪里将此代码放在基于文档的应用程序中以处理URL事件?我已经在-windowControllerDidLoadNib:中使用了它,但如果应用已关闭则无法正常工作,因为文档尚未设置。

NSAppleEventManager *appleEventManager = [NSAppleEventManager sharedAppleEventManager];
[appleEventManager setEventHandler:self andSelector:@selector(handleGetURLEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];

2)如何将解析后的数据从URL发送到新文档?我正在使用-handleGetURLEvent:withReplyEvent:这样的方法创建新文档。

[[NSDocumentController sharedDocumentController] newDocument:nil];

1 个答案:

答案 0 :(得分:0)

1)我在哪里将此代码放在基于文档的应用程序中以处理URL事件?

最有可能在您的应用程序中委托applicationDidFinishLaunching方法。

2)如何将解析后的数据从URL发送到新文档?

- (void)handleGetURLEvent:(NSAppleEventDescriptor *)event 
       withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
    NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
    NSLog(@"URL: %@", urlString);
    NSString *httpString = [urlString substringFromIndex:7];
    NSLog(@“HTTP URL: %@", httpString);
    [self openNewDocumentAtURL:[NSURL URLWithString:httpString]];
}

- (void)openNewDocumentAtURL:(NSURL *)absoluteURL {
    NSDocumentController *docController = [NSDocumentController sharedDocumentController];
    [docController newDocument:nil];
    [(ResponseDocument *)[docController currentDocument] updateURL:absoluteURL];
}