如何转换Unmanaged <anyobject>!字符串</anyobject>

时间:2014-07-16 11:37:25

标签: ios swift addressbook

我在新应用中使用Swift。在这里,我试图从AddressBook访问电子邮件ID。一切都很好,但最后我得到了不受管理!来自ABMultiValueCopyValueAtIndex(multi,0)。

那么如何从中转换或提取字符串呢?

提前致谢!

3 个答案:

答案 0 :(得分:2)

试试这个:

let str = yourVar.takeRetainedValue() as String

答案 1 :(得分:1)

let value : String? = ABMultiValueCopyValueAtIndex(multivalue, 0).takeRetainedValue() as? String

答案 2 :(得分:1)

尝试使用此功能将Unmanaged转换为Stirng

func convertCfTypeToString(cfValue: Unmanaged<AnyObject>!) -> String?{

    let value = Unmanaged.fromOpaque(
        cfValue.toOpaque()).takeUnretainedValue() as CFString
    if CFGetTypeID(value) == CFStringGetTypeID(){
        return value as String
    } else {
        return nil
    }
}

用法:

let value = convertCfTypeToString(cfValue: ABMultiValueCopyValueAtIndex(multivalue, 0))