CNContact属性编码

时间:2017-09-18 20:14:34

标签: ios swift cncontact

我有一个名字为André的v-card字符串,我用v-card初始化CNContact

BEGIN:VCARD

VERSION:2.1

N:Foo;André;;;

FN:André Foo

TEL;CELL:00023 4474848

END:VCARD

我用这样的原始字符串初始化联系人:

if let data = string.data(using: .utf8) {
    do {
        let contacts = try CNContactVCardSerialization.contacts(with: data)
        let contact = contacts.first
        return contact

    } catch {
        print("Data is not a VCard")
    }
}

但是当我打印出contact.givenName的原始字符串时,我得到了:

André

如何在iOS中获取正确的Contacts框架字符串?

1 个答案:

答案 0 :(得分:1)

您需要在vcard字段中添加字符集,默认为ASCII。

BEGIN:VCARD

VERSION:2.1

N;CHARSET=UTF-8:Foo;André;;;

FN;CHARSET=UTF-8:André Foo

TEL;CELL:00023 4474848

END:VCARD

如果你想破解vcard中这种特定类型的错误,那么你可以手动将charset注入其中:

let fixed = string.replacingOccurrences(of: "\nN:", with: "\nN;CHARSET=UTF-8:").replacingOccurrences(of: "\nFN:", with: "\nFN;CHARSET=UTF-8:")
相关问题