2017-09-18 13 views
-1

私は、最初の名前がAndréのvカード文字列を持っていて、私はCNContactをvカードで初期化します。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で連絡先フレームワークの適切な文字列を取得しますか?

答えて

-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に誤りのこの特定のタイプの周りにハックしたい場合は、あなたがそれに手動で文字セットを注入することができます

let fixed = string.replacingOccurrences(of: "\nN:", with: "\nN;CHARSET=UTF-8:").replacingOccurrences(of: "\nFN:", with: "\nFN;CHARSET=UTF-8:") 
+0

しかし、私は、文字セットを制御することはできませんか?第三者からvcardを受け取ったとしましょう... –

+0

第三者がvcardsを修正する必要があります。 – dan

+0

これはまったく役に立ちません。申し訳ありません。ウェブがそんなものだったら、私たち全員が今すぐ放棄すべきです... –

関連する問題