【问题标题】:iOS/iPhone programming. Address book. Extra property for user/contactiOS/iPhone 编程。地址簿。用户/联系人的额外属性
【发布时间】:2011-05-16 07:43:53
【问题描述】:

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

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

【问题讨论】:

    标签: iphone ios api addressbook


    【解决方案1】:

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

    【讨论】:

    • 其实记录ID不保证不变。来自 Apple 的 iOS 通讯簿编程指南:“通讯簿数据库中的每条记录都有一个唯一的记录标识符。此标识符始终指同一条记录,除非该记录被删除或 MobileMe 同步数据被重置。记录标识符可以安全地在线程之间传递。它们不能保证在设备之间保持相同。保持对特定记录的长期引用的推荐方法是存储名字和姓氏,或者名字和姓氏的哈希,此外到标识符。”
    • 这在 iOS 7 中仍然不可能吗?
    【解决方案2】:

    向通讯簿添加自定义属性。

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

    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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    相关资源
    最近更新 更多