Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 以编程方式启动OSX';s联系人应用程序是否显示联系人?_Macos_Cocoa_Contacts_Abaddressbook_Appkit - Fatal编程技术网

Macos 以编程方式启动OSX';s联系人应用程序是否显示联系人?

Macos 以编程方式启动OSX';s联系人应用程序是否显示联系人?,macos,cocoa,contacts,abaddressbook,appkit,Macos,Cocoa,Contacts,Abaddressbook,Appkit,假设我刚刚创建了一个ABPerson记录,并将其保存在用户的通讯簿中。如何以编程方式打开处理通讯簿的默认应用程序(很可能是联系人,但在某些情况下可能是Outlook或其他应用程序),并显示我刚刚添加的新通讯簿记录 提前感谢。地址簿URL方案能够显示或编辑个人记录: ABPerson * aPerson = <#assume this exists#>; // Open the Contacts app, showing the person record. NSString * u

假设我刚刚创建了一个
ABPerson
记录,并将其保存在用户的通讯簿中。如何以编程方式打开处理通讯簿的默认应用程序(很可能是联系人,但在某些情况下可能是Outlook或其他应用程序),并显示我刚刚添加的新通讯簿记录


提前感谢。

地址簿URL方案能够显示或编辑个人记录:

ABPerson * aPerson = <#assume this exists#>;

// Open the Contacts app, showing the person record.
NSString * urlString = [NSString stringWithFormat:@"addressbook://%@", [aPerson uniqueId]];
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:urlString]];
ABPerson*aPerson=;
//打开联系人应用程序,显示联系人记录。
NSString*urlString=[NSString stringWithFormat:@“addressbook://%@,[aPerson uniqueId]];
[[NSWorkspace sharedWorkspace]openURL:[NSURL URLWithString:urlString]];

更多信息请参见。

这是我使用Contacts应用程序拍摄的照片,以Swift格式,作为
CNContact
的扩展。我想现在大多数人都在使用通讯录而不是通讯录

(CNContact的
标识符
与ABPerson的
唯一ID
相同)


联系人位于用户库/应用程序支持中长链子文件夹末尾的单独文件中。文件名只是联系人的标识符加上扩展名。您可以通过将其中一个拖动到Xcode编辑器中,并用引号括起来,或者删除最后一个路径组件来保存一些键入。因为我的应用程序不适合发布,这对我来说已经足够了;否则,您将不得不进行一些修改:用户名将位于第二个路径组件中。我不知道“源”后面的长ID号的意义,不管它是用户的还是系统特定的,但它是该子文件夹中唯一的项,因此您应该能够通过编程构建可行的路径。

我认为您可能有更好的机会使用Applescript实现这一点。
func showInContacts() {
  let path = 
    "/Users/someusername/Library/Application Support/AddressBook/Sources/05A62A31-9C1F-423F-A9F4-011E56EAAF29/Metadata/0A1F4FC2-7E01-4A40-92DE-840F8C84DE58:ABPerson.abcdp
  var url = URL(fileURLWithPath: path)
  url.deleteLastPathComponent()
  url.appendPathComponent(self.identifier)// self is a CNContact
  url.appendPathExtension("abcdp")
  NSWorkspace.shared.open(url)
}