Swift 如何从设备创建所有联系人的.xml文件。或者如何将.vcf文件导入.xml文件
我想为ios设备的所有联系人创建一个.xml文件,并在另一端再次发送该文件。我想解析xml并创建联系人,注意:-可以使用.vcf作为中介,但对于这个项目,我必须创建.xml文件。我通过编写一个单独的读写器解决了这个问题:- 阅读器功能:-Swift 如何从设备创建所有联系人的.xml文件。或者如何将.vcf文件导入.xml文件,swift,xml,Swift,Xml,我想为ios设备的所有联系人创建一个.xml文件,并在另一端再次发送该文件。我想解析xml并创建联系人,注意:-可以使用.vcf作为中介,但对于这个项目,我必须创建.xml文件。我通过编写一个单独的读写器解决了这个问题:- 阅读器功能:- func contactsToVCARDXMLGenerator()-> AEXMLDocument{ let store = CNContactStore() var contacts : [CNContact] = []
func contactsToVCARDXMLGenerator()-> AEXMLDocument{
let store = CNContactStore()
var contacts : [CNContact] = []
let contactsXML = AEXMLDocument()
let root = contactsXML.addChild(name: "root")
let fetchRequest = CNContactFetchRequest(keysToFetch:[CNContactVCardSerialization.descriptorForRequiredKeys()])
do {
try store.enumerateContacts(with: fetchRequest, usingBlock: { (contact, stop) -> Void in
contacts.append(contact)
})
}
catch{
print(error.localizedDescription)
}
do {
let vcarddat = try CNContactVCardSerialization.data(with: contacts)
let vcardAsString = String(data: vcarddat, encoding: .utf8)
print(vcardAsString!)
let contactsArray = vcardAsString!.components(separatedBy: "END:VCARD")
for index in 0..<contacts.count {
root.addChild(name: "contact", value: "\(contactsArray[index])")
}
}catch{
print(error.localizedDescription)
}
return contactsXML
}
func contactsToVCARDXMLGenerator()->AEXMLDocument{
let store=CNContactStore()
变量联系人:[CNContact]=[]
让contactsXML=AEXMLDocument()
让root=contactsXML.addChild(名称:“root”)
let fetchRequest=CNContactFetchRequest(keysteFetch:[CNContactVCardSerialization.descriptorForRequiredKeys()]
做{
请尝试store.enumerateContacts(使用:fetchRequest,使用block:{(联系人,停止)->Void in)
contacts.append(contact)
})
}
抓住{
打印(错误。本地化描述)
}
做{
让vcarddat=尝试CNContactVCardSerialization.data(使用:contacts)
让vcardAsString=String(数据:vcarddat,编码:.utf8)
打印(vCardaString!)
让contactsArray=vCardaString!.components(以“END:VCARD”分隔)
对于0中的索引。请提供您对此问题所做的任何代码尝试。我已解决此问题:-
func xmlToRemindersEntries(xmlDoc : String) -> Bool{
//print(xmlDoc)
do{
let doc = try AEXMLDocument.init(xml: xmlDoc)
var vcardString = String()
for contact in doc.root.children {
vcardString += "\(contact.value!)\nEND:VCARD\n"
}
let contacts = try CNContactVCardSerialization.contacts(with: vcardString.data(using: .utf8)!)
for each in contacts{
let mutCpoy = each.mutableCopy() as! CNMutableContact
let store = CNContactStore()
let saveRequest = CNSaveRequest()
saveRequest.add(mutCpoy, toContainerWithIdentifier:nil)
try! store.execute(saveRequest)
}
}catch{
print(error.localizedDescription)
return false
}
return true
}