我还是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 ;)...所以我不知道从哪里开始。
有人可以解释错误以及我应该去哪里阅读地址簿中联系人的社交档案数据吗?谢谢。
答案 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)
}
}
}
}