gpt4 book ai didi

objective-c - 如何从我的应用程序启动 Mac 地址簿并选择特定人员?

转载 作者:行者123 更新时间:2023-12-03 16:30:07 26 4
gpt4 key购买 nike

我有一个应用程序,我正在使用 ABAddressBook API 读取地址簿信息并选择一个人。我想在我的应用程序中提供一个链接来启动 Mac 地址簿并预选特定用户。

我确信有几种方法可以做到这一点 - 我想出了一种似乎可行但感觉有点笨拙的方法。我启动“Address Book.app”,如果成功,它会调用一些 AppleScript 来选择“currentPerson”uniqueId(来自 ABRecord 对象)。

- (void) notifyABSelect
{
NSString *src = [NSString stringWithFormat:@"tell application \"Address Book\"\r\n\tset selection to first person whose id is \"%@\" \r\nend tell", [currentPerson uniqueId]];

NSMutableDictionary *err = [NSMutableDictionary dictionary];
NSAppleScript *script = [[NSAppleScript alloc] initWithSource:src];
[script executeAndReturnError:&err];

[[[NSWorkspace sharedWorkspace] notificationCenter] removeObserver:self];

[src release];
[err release];
[script release];
}

- (IBAction) launchAddressBook:(id)sender
{
[[[NSWorkspace sharedWorkspace] notificationCenter]
addObserver:self
selector:@selector(notifyABSelect)
name:NSWorkspaceDidLaunchApplicationNotification
object:nil];

if ([[NSWorkspace sharedWorkspace] launchApplication:@"Address Book.app"] == YES)
{
[self notifyABSelect];
}
else
{
NSLog(@"Unable to launch address book");
}

}

如果地址簿之前选择了“所有联系人”以外的组,则出现这种情况;它可能会或可能不会根据他们是否在所选组中找到该人。但是,在应用程序中第二次单击该链接确实会正确转到“所有联系人”并找到该人。

有哪些替代方法可以实现此行为?

最佳答案

您可以使用 URL。

[[NSWorkspace sharedWorkspace] openURL:
[NSURL URLWithString:
[NSString stringWithFormat:
@"addressbook://%@", [currentPerson uniqueId]]]];

关于objective-c - 如何从我的应用程序启动 Mac 地址簿并选择特定人员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2798702/

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