使用Swift在iOS中读取地址簿数据

时间:2015-03-23 17:55:43

标签: ios swift

我还是Swift的新手,并且正在使用iOS中的地址簿,它被证明是一只熊。具体来说,我试图阅读联系人"社交档案"。

对于像名字/姓氏这样的字符串值,这有效:

let firstName = ABRecordCopyValue(person, kABPersonFirstNameProperty).takeRetainedValue() as String

但是当我尝试使用kABPersonSocialProfileProperty属性"(类型为kABMultiDictionaryPropertyType的多值属性)"基本上做同样的事情时,像这样:

let socialData = ABRecordCopyValue(person, kABPersonSocialProfileProperty)

我收到错误:'CFString' is not convertible to 'ABPropertyID'

我不清楚为什么会抛出此错误。

我已阅读Apple iOS开发人员文档,似乎ABRecordCopyValue 是正确的函数("返回记录属性的值。&#34 ;)...所以我不知道从哪里开始。

有人可以解释错误以及我应该去哪里阅读地址簿中联系人的社交档案数据吗?谢谢。

1 个答案:

答案 0 :(得分:1)

这是我最终做的事情(请原谅部分片段,匹配函数的一部分):

let socialProfiles: ABMultiValueRef = ABRecordCopyValue(person, kABPersonSocialProfileProperty).takeRetainedValue() as ABMultiValueRef
for var index:CFIndex = 0; index < ABMultiValueGetCount(socialProfiles); ++index {

    if let socialProfile: AnyObject = ABMultiValueCopyValueAtIndex(socialProfiles, index).takeRetainedValue() as? NSDictionary {

        let service = socialProfile["service"] as String
        if service == "Twitter" {

            let username = socialProfile["username"] as String
            if username == paramUsername {
                return (true, person)
            }
        }
    }
}