- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 CNContactVCardSerialization
将联系人保存为 vcf,效果相对较好。我确实发现苹果不包含注释或图像作为 VCF 的一部分。我确实使用了 stackoverflow answer帮助序列化图像,但现在我也在努力添加注释。
这是我尝试过的:
extension CNContactVCardSerialization {
internal class func vcardDataAppendingPhoto(vcard: Data, photoAsBase64String photo: String) -> Data? {
let vcardAsString = String(data: vcard, encoding: .utf8)
let vcardPhoto = "PHOTO;TYPE=JPEG;ENCODING=BASE64:".appending(photo)
let vcardPhotoThenEnd = vcardPhoto.appending("\nEND:VCARD")
if let vcardPhotoAppended = vcardAsString?.replacingOccurrences(of: "END:VCARD", with: vcardPhotoThenEnd) {
return vcardPhotoAppended.data(using: .utf8)
}
return nil
}
internal class func vcardDataAppendingNote(vcard: Data, note:String) -> Data? {
let vcardAsString = String(data: vcard, encoding: .utf8)
let vcardNote = "NOTE:".appending(note)
let vcardNoteThenEnd = vcardNote.appending("\nEND:VCARD")
if let vcardNoteAppended = vcardAsString?.replacingOccurrences(of: "END:VCARD", with: vcardNoteThenEnd) {
return vcardNoteAppended.data(using: .utf8)
}
return nil
}
class func data(jpegPhotoContacts: [CNContact]) throws -> Data {
var overallData = Data()
for contact in jpegPhotoContacts {
let data = try CNContactVCardSerialization.data(with: [contact])
if (contact.note != "") || contact.imageDataAvailable {
if contact.imageDataAvailable {
if let base64imageString = contact.thumbnailImageData?.base64EncodedString(),
let updatedData = vcardDataAppendingPhoto(vcard: data, photoAsBase64String: base64imageString) {
overallData.append(updatedData)
}
}
if contact.note != ""{
if let updatedData = vcardDataAppendingNote(vcard: data, note: contact.note){
overallData.append(updatedData)
}
}
} else {
overallData.append(data)
}
}
return overallData
}
}
这似乎不起作用。我可以让笔记或图像部分工作,但不能同时工作。
我可能没有正确添加到 VCF 文件。
非常感谢任何帮助。
最佳答案
它并不漂亮,但这是我所做的以及目前的工作:
extension CNContactVCardSerialization {
internal class func vcardDataAppendingPhoto(vcard: Data, photoAsBase64String photo: String) -> Data? {
let vcardAsString = String(data: vcard, encoding: .utf8)
let vcardPhoto = "PHOTO;TYPE=JPEG;ENCODING=BASE64:".appending(photo)
if let vcardPhotoAppended = vcardAsString?.appending(vcardPhoto) {
return vcardPhotoAppended.data(using: .utf8)
}
return nil
}
internal class func vcardDataAppendingNote(vcard: Data, note:String) -> Data? {
let vcardAsString = String(data: vcard, encoding: .utf8)
let vcardNote = "NOTE:".appending(note)
let vcardFinal = vcardNote.appending("\n")
if let vcardNoteAppended = vcardAsString?.appending(vcardFinal) {
return vcardNoteAppended.data(using: .utf8)
}
return nil
}
internal class func vcardDataAppendingEnd(vcard: Data) -> Data? {
let vcardAsString = String(data: vcard, encoding: .utf8)
let vcardEnd = "\nEND:VCARD"
if let vcardEndAppended = vcardAsString?.appending(vcardEnd) {
return vcardEndAppended.data(using: .utf8)
}
return nil
}
internal class func vcardDataCleanEnd(vcard: Data) -> Data? {
let vcardAsString = String(data: vcard, encoding: .utf8)
if let vcardCleaned = vcardAsString?.replacingOccurrences(of: "END:VCARD", with: "\n"){
return vcardCleaned.data(using: .utf8)
}
return nil
}
class func data(jpegPhotoContacts: [CNContact]) throws -> Data {
var overallData = Data()
for contact in jpegPhotoContacts {
let data = try CNContactVCardSerialization.data(with: [contact])
if (contact.note != "") || contact.imageDataAvailable {
if let updatedData = vcardDataCleanEnd(vcard: data){
overallData = updatedData
}
if contact.note != ""{
if let updatedData = vcardDataAppendingNote(vcard: overallData, note: contact.note){
overallData = updatedData
}
}
if contact.imageDataAvailable {
if let base64imageString = contact.thumbnailImageData?.base64EncodedString(),
let updatedData = vcardDataAppendingPhoto(vcard: overallData, photoAsBase64String: base64imageString) {
overallData = updatedData
}
}
if let updatedData = vcardDataAppendingEnd(vcard: overallData){
overallData = updatedData
}
} else {
overallData.append(data)
}
}
return overallData
}
}
关于swift - 将注释和图像添加到序列化的 VCF 联系人,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54739325/
我不想先解压缩 vcf.gz 文件,因为它是一个大文件,而且我的笔记本电脑没有空间容纳它。我试着做: gunzip -c file.vcf.gz > bgzip -c > file.vcf.bgz 但
我正在尝试根据这些规范创建一个 .VCF 文件(使用 3.0 版) https://en.wikipedia.org/wiki/VCard#vCard_3.0 https://tools.ietf.o
我的数据文件是gnomad.exomes.r2.1.1.sites.13.vcf.bgz . 我已经解压了VCF。这是我在过滤数据后插入 Postgres 的代码: # ===============
我有一个包含大量联系人(29000!)的 .vcf 文件。我想合并重复项(例如,同名,两个条目,一个带有电子邮件,另一个带有电话号码),并为它们删除完全相同的重复项。我查看了一些 android 应用
我已经用 iPhone 创建了一个 .vcf 联系人,并通过电子邮件将文件发送给我自己。在那个 .vcf 中,我拍了一张照片,它直接保存在 vCard 中,而不是手机内存中。 在 .vcf 的源代码中
我有一个大型 Variant Call 格式 (VCF) 文件(> 4GB),其中包含多个样本的数据。 我浏览过 Google、Stackoverflow 并尝试过 R 中的 VariantAnnot
我有这个结构,我只想提取 FN 和 TEL: BEGIN:VCARD VERSION:2.1 N:Pepe;Perez;;; FN:Pepe Perez TEL;HOME:+549465738283
我使用以下代码为单个联系人创建 vcf 文件。我想要的是,当我单击特定联系人时,它将为该联系人创建一个 vcf 文件。这是我正在使用的代码: String vfile = "test1.vcf";
我正在尝试使用 CNContactVCardSerialization 将联系人保存为 vcf,效果相对较好。我确实发现苹果不包含注释或图像作为 VCF 的一部分。我确实使用了 stackoverfl
Android How to send multiple contacts are attached in single .vcf file and send to mail? 我已经创建了所有联系人
我必须从地址簿中选择多个联系人并保存到我的应用程序中。现在,如果我从地址簿中删除任何联系人,并且它是以前保存在我的应用程序中的联系人,为了恢复已删除的联系人,我需要创建 vcf 文件。 最佳答案 如果
我已经创建了 vcf 文件并将其上传到我的网站。当我按下我创建的“保存联系人”而不是将其保存到联系人的下载按钮时,它会像这样打开它: BEGIN:VCARD VERSION:2.1 N:John;Do
所以我有一张我一直在测试的 VCARD BEGIN:VCARD VERSION:2.1 N:Smith;John;;; FN:John Smith TEL;CELL:+61000000000 TEL;
我想知道,如何实现Vcard的下载。这是我当前的代码: $path = "../../media/resources/"; $file = "someName.vcf"; header('Cont
我有一个约 300 GB 的压缩 vcf 文件 (.vcf.gz),其中包含大约 700 只狗的基因组。我只对这些狗中的几只感兴趣,目前我没有足够的空间来解压整个文件,尽管我正在让一台电脑来做这件事。
在我的应用程序中,多个联系人附加到单个 .vcf 文件并将该文件发送到邮件,尝试将所有联系人数据显示在日志猫中,但无法发送所有数据附加到单个 .vcf 文件? 任何人对此有帮助,请帮助我。 这是我的代
我想为一个对象生成一个 .vcf 文件,其中包含联系人信息,如姓名、图像、电话号码、传真号码、电子邮件 ID、地址等。该对象未添加到电话的地址簿中,但它是存储在我的应用程序中。 生成我的 .vcf 文
我想将手机联系人导出到外部存储区。我没有使用这种方法。有人指导我这样做吗? 最佳答案 在您的代码中,您编写了一个函数,但该函数是从哪里调用的? get(View view) 函数是什么意思?此函数未被
我有一个类来保存数据和该类的列表。这是我的代码。 static void Main(string[] args) { List contacts = new List();
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 7 年前。 Improve th
我是一名优秀的程序员,十分优秀!