iOS/iPhone编程。地址簿。用户/联系人的额外属性

问题描述:

我正在开发一个使用标准iPhone地址簿(数据库)的联系人的iPhone应用程序。我需要为联系人添加一些额外的属性,但正如我看到iOS API不允许向联系人添加额外/自定义属性。iOS/iPhone编程。地址簿。用户/联系人的额外属性

问题: 1.是否有能力处理iOS adressbook API中的额外属性? 2.我需要关于如何为用户/联系人存储额外数据的标准方法的专家建议:使用SQLite,XML或者可能有一些数据存储专用于每个应用程序?

无法将自定义字段附加到地址簿记录。您应该考虑查看Core Data,您可以在其中存储映射到记录ID的自定义字段。

+2

实际上该记录ID是不能保证不变。从iOS的通讯簿编程指南:“通讯簿数据库中的每个记录都有一个唯一的记录标识符,该标识符始终指向同一条记录,除非该记录被删除或MobileMe同步数据被重置。它们不保证在不同设备上保持不变 保持对特定记录的长期引用的推荐方式是存储名字或姓氏或名字和姓氏的散列,除了标识符。“ – PixelCloudSt 2012-10-01 00:06:45

+0

在iOS 7中这仍然不可行吗? – bobsacameno 2014-08-14 08:39:02

将自定义属性添加到地址簿。

以下代码清单添加了自定义属性,然后删除 它:

NSNumber* stringProperty = [NSNumber numberWithInteger:kABStringProperty]; 
NSString* testProperty = @"com.example.myProperty"; 
NSDictionary* dict = [NSDictionary dictionaryWithObject:stringProperty 
               forKey:testProperty]; 

NSInteger result = [ABPerson addPropertiesAndTypes:dict]; 
NSLog(@"Added %d properties.", result); 

result = [ABPerson removeProperties:[NSArray arrayWithObject:testProperty]]; 
NSLog(@"Removed %d properties.", result); 

更多信息:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AddressBook/Tasks/AddingProperties.html

+0

欢迎您访问解决方案的链接,但请确保您的答案在没有它的情况下是有用的:[添加链接的上下文](// meta.stackexchange.com/a/8259),以便您的同行用户了解它是什么以及为什么它在那里,然后引用您链接的页面中最相关的部分,以防目标页面不可用。 [仅仅是一个链接的答案可能会被删除。](// stackoverflow.com/help/deleted-answers) – sudo 2017-08-15 05:46:34