我们说我刚创建了ABPerson
条记录,并设法将其保存在用户的地址簿中。如何以编程方式打开处理通讯簿的默认应用程序(最有可能是联系人但在某些情况下可能是Outlook或其他应用程序)并显示我刚刚添加的新通讯录记录?
提前致谢。
答案 0 :(得分:0)
addressbook
网址计划可以显示人员记录或对其进行编辑:
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]];
答案 1 :(得分:0)
这是我使用“联系人”应用的要诀,在Swift中,它是CNContact
的扩展名。我希望如今,大多数人都优先使用通讯录而不是通讯录。
(CNContact的identifier
与ABPerson的uniqueId
相同。)
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)
}
联系人位于单独的文件中,该文件埋在用户的图书馆/应用程序支持的一长串子文件夹的末尾。文件名只是联系人的标识符加上扩展名。您可以通过将其中之一拖到Xcode编辑器中,并用引号引起来,然后删除最后一个路径组件,从而节省键入内容。因为我的应用程序不适合分发,所以对我来说已经足够了;否则,您将不得不进行一些修改:用户名将位于第二个路径组件中。我不知道'Sources'后面的长ID号的重要性,无论是用户还是系统特定的,但是它是该子文件夹中的唯一项,因此您应该能够以编程方式构建可行的路径。