Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 如何从设备创建所有联系人的.xml文件。或者如何将.vcf文件导入.xml文件_Swift_Xml - Fatal编程技术网

Swift 如何从设备创建所有联系人的.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] = []

我想为ios设备的所有联系人创建一个.xml文件,并在另一端再次发送该文件。我想解析xml并创建联系人,注意:-可以使用.vcf作为中介,但对于这个项目,我必须创建.xml文件。

我通过编写一个单独的读写器解决了这个问题:- 阅读器功能:-

     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
}