将 vCard 数据直接添加到系统地址簿

2023-12-24

我正在设计一个QR码阅读器,它需要检测并导入vCard格式(.vcf)的联系人卡片。

有没有办法直接将名片数据添加到系统地址簿中,或者我需要自己解析vCard并单独添加每个字段?


如果您在 iOS 5 或更高版本上运行,以下代码应该可以解决问题:

#import <AddressBook/AddressBook.h>

// This gets the vCard data from a file in the app bundle called vCard.vcf
//NSURL *vCardURL = [[NSBundle bundleForClass:self.class] URLForResource:@"vCard" withExtension:@"vcf"];
//CFDataRef vCardData = (CFDataRef)[NSData dataWithContentsOfURL:vCardURL];

// This version simply uses a string. I'm assuming you'll get that from somewhere else.
NSString *vCardString = @"vCardDataHere";
// This line converts the string to a CFData object using a simple cast, which doesn't work under ARC
CFDataRef vCardData = (CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding];
// If you're using ARC, use this line instead:
//CFDataRef vCardData = (__bridge CFDataRef)[vCardString dataUsingEncoding:NSUTF8StringEncoding];

ABAddressBookRef book = ABAddressBookCreate();
ABRecordRef defaultSource = ABAddressBookCopyDefaultSource(book);
CFArrayRef vCardPeople = ABPersonCreatePeopleInSourceWithVCardRepresentation(defaultSource, vCardData);
for (CFIndex index = 0; index < CFArrayGetCount(vCardPeople); index++) {
    ABRecordRef person = CFArrayGetValueAtIndex(vCardPeople, index);
    ABAddressBookAddRecord(book, person, NULL);
}

CFRelease(vCardPeople);
CFRelease(defaultSource);
ABAddressBookSave(book, NULL);
CFRelease(book);

确保链接到项目中的 AddressBook 框架。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 vCard 数据直接添加到系统地址簿 的相关文章

  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 如何检测用户是否第一次打开应用程序[重复]

    这个问题在这里已经有答案了 是否可以检测用户是否是第一次打开iOS应用程序 使用Objective C 我想在用户第一次打开应用程序时显示欢迎消息 但之后不再向他们显示 我正在寻找类似的东西 BOOL firstTime AppDelega
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • SwiftUI 意外地自动弹出 NavigationLink

    我有一个简单的用例 其中一个屏幕使用 NavigationLink 推送另一个屏幕 iOS 14 5 有一个奇怪的行为 即推送的屏幕在被推送后立即弹出 Code NavigationLink destination EmptyView Em
  • 在 iOS 应用程序中拨打电话

    我有一些代码尝试在应用程序中进行调用 但它似乎不起作用 UIApplication myApp UIApplication sharedApplication NSString theCall NSString stringWithForm
  • iPhone X 将对象底部与安全区域对齐会破坏其他设备上的外观

    关于 iPhone X 自动布局怪癖的问题 我有两个按钮 以前这些按钮将与超级视图底部对齐 偏移量为 20 以免它们接触屏幕底部 此后我将链接更改为安全区域而不是超级视图 Here s the original setup Looks go
  • UIViewController 不旋转到横向

    在许多情况下需要旋转控制器但不起作用 现在我遇到了相反的问题 它正在旋转 我想禁用它 在那个 ViewController 中我有这个 BOOL shouldAutorotateToInterfaceOrientation UIInterf
  • 如何按字母顺序对 UITableView 分区进行排序?

    我有一个包含 3 个类别的分段 UITableView 我正在使用这段代码 NSArray arrayOne NSArray arrayWithObjects one two three four nil NSDictionary dict
  • Swift:长按手势识别器 - 检测轻击和长按

    我想连接一个动作 如果手势是点击 它会以特定的方式为对象设置动画 但如果按下持续时间超过 0 5 秒 它会执行其他操作 现在 我刚刚连接了动画 我不知道如何区分长按和点击 如何访问新闻持续时间以实现上述目的 IBAction func ta
  • iOS 7 tabBar 横线,如何去掉?

    Apple 在 iOS 7 中的 tabBar 上添加了一条细线 该线应该在 tabBar 和 UI 之间起到阴影或淡入淡出的作用 由于我使用的是定制的 tabBar 这条线非常令人恼火 你如何删除它 请告诉我这是可能的 否则我需要重新设计
  • 未知异常和崩溃

    当我尝试快速滚动表格视图或从远程重新加载数据时 我的应用程序崩溃了 当我先进行远程获取然后滚动表格视图时 一切似乎都工作正常 我不知道下面的崩溃日志意味着什么 它只是有时工作正常 有时崩溃 Incident Identifier 710A1
  • 如何使用phonegap在iOS应用程序中防止键盘推送webview

    当屏幕底部的输入字段获得焦点时 键盘会向上推我的网络视图 并且页面的上部不再可见 我想防止键盘推高网络视图 有人有主意吗 对焦 设置window scrollTo 0 0 这可以防止键盘完全推高 webview input on focus
  • 在 iOS 上使用 RNCryptor 异步解密大文件

    我需要在 iOS 上使用 RNCryptor 异步解密一个大文件 以便显示进度条 我在任何地方都找不到示例 因此尝试了我猜对的方法 但是 我想出的方法不起作用 解密器的处理程序从未被调用 并且线程在发送所有数据后因 EXC BAD ADDR
  • CATextLayer 上 iOS 6 中不需要的垂直填充

    背景 我在 iOS 5 中开始了我的项目 并构建了一个带有图层的漂亮按钮 我在按钮上添加了一个 textLayer 并使用以下代码将其居中 float textLayerVerticlePadding self bounds size he
  • 当应用程序进入前台时,如何重新启动基于块的动画?

    我有以下基于块的动画 UIView animateWithDuration 0 5f delay 0 0f options UIViewAnimationOptionRepeat UIViewAnimationOptionAutorever
  • Mac 上的 Delphi - 可能吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我负责一个 Delphi Win32 项目管理应用程序 我刚刚完成了向 Delphi 2009 的迁移
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • HQL 查询检查集合大小是否为 0 或空

    我尝试生成一个 HQL 查询 其中包含具有空约会集合的用户 由 OneToMany 映射 SELECT u FROM User u JOIN u appointments uas WHERE u status 1 AND uas time
  • HSQLDB 可以处理几百万行吗?

    我正在开发一个需要数据库的单用户应用程序 大多数表都具有合理数量的数据 但也有一些表可能会增长到数百万行 我的任何查询都不会返回大型结果集 有人知道 HSQLDB 是否可以处理这么大量的行吗 From HSQLDB 官方页面 http ww
  • 内存层次结构 - 为什么寄存器昂贵?

    我明白那个 Faster访问时间 gt More昂贵的 Slower访问时间 gt Less昂贵的 我还了解到寄存器是层次结构的顶部 并且具有最快的访问时间 我很难研究的是why这么贵吗 据我所知 寄存器实际上是直接内置于 ALU 中的电路
  • 给定年份和月份的月份函数的最后一天

    多次单步执行代码后 我无法找到具体导致此错误的原因 我希望有人以前见过这个错误 这就是我的think与问题相关 Load packages library lubridate MONTH lt 1 YEAR lt 2018 Last day
  • 如何使用 ie11 在 Threejs 中加载 gltf 场景

    我使用 Three js 及其 gltfloader js 编写了一个简单的 html 来加载 gltf 模型 它在 Mozilla 上完美运行 但即使没有错误 它也不会显示在 ie11 上 我尝试过使用 es6 promise polly
  • 使用 python lxml xpath 迭代表中的所有行

    这是我想要从中提取数据的html页面的源代码 网页 该表格位于页面底部 table class clCommonGrid cellspacing 0 thead tr td Kommande matcher td tr tr th th t
  • 游戏开发方面 SharpDX 与 SlimDX 比较? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 cypress 从数据库中检索值

    谁能帮我解决以下场景 我必须执行一个select语句并使用 Cypress 将查询结果存储在变量中 下面是我尝试过的代码 我想存储查询结果 select id from invoices where INumber invoiceNumbe
  • 如何在 OpenGL 中可视化深度纹理?

    我正在研究阴影贴图算法 我想调试它在第一次传递时生成的深度图 但是 深度纹理似乎无法正确渲染到视口 有没有简单的方法可以将深度纹理显示为灰度图像 最好不使用着色器 您可能需要更改深度纹理参数以将其显示为灰度级别 glTexParameter
  • 使用 scipy.optimize 动态选择要最小化 python 中函数的参数

    我有一个函数 它接受变量列表作为参数 我想使用 scipy optimize minimize 最小化这个函数 问题在于 它是在运行时决定应该对参数列表中的哪个变量进行最小化的 所有其他变量将获得固定值 让我们举个例子来说明一下 a 1 c
  • require 的行为(静态 + 动态)[ RAKU ]

    我的问题与以下行为有关require当与所需命名空间的静态或动态解析一起使用时 我将尝试表达我对事物的理解 1 将 require 与文字一起使用 require MODULE 在这种情况下 编译器会检查 MODULE 是否已被声明为符号
  • 在运行时保存并重新加载 app.config(applicationSettings)

    我已将应用程序的配置存储在 app config 中 通过 Visual Studio 我在项目属性对话框的设置选项卡上创建了一些应用程序密钥 然后我在应用程序级别 而不是用户级别 设置了该密钥 Visual Studio 自动生成以下 x
  • 在操作方法中填充模型后对话框未更新

    我正在使用 primefaces 对话框 我有一个项目列表 每当我选择一个项目时 我希望对话框显示该项目名称 然而 这并没有发生 该对话框根本不显示任何名称 而不是显示项目名称 我在下面发布了我的代码
  • NSubstitute ILogger .NET Core

    我正在尝试围绕异常处理编写单元测试 以便可以验证我的记录器是否正确记录了异常 我使用 NSubstitute 作为模拟框架Microsoft Extensions Logging ILogger我必须遵循我的测试 Fact public v
  • 链接:警告 LNK4098:defaultlib 'MSVCRT' 与其他库的使用冲突;使用 /NODEFAULTLIB:库

    当我尝试构建与 libeay32 lib 链接的源代码时 我已经从 OpenSSL 源本地构建了这个 我遇到了上述警告 LINK 警告 LNK4098 defaultlib MSVCRT 与其他库的使用冲突 使用 NODEFAULTLIB
  • GIT-SVN克隆命令执行没有错误,但本地master分支丢失

    我正在尝试使用 GIT SVN 但在启动时遇到问题 我可以克隆 svn 存储库 或使用 git svn init 然后使用 git svn fetch 不会出现任何错误 但在命令停止处理后 git 存储库为空 并且没有本地主分支 我的 sv
  • 某些客户端的 HTTP 标头的字符被随机替换

    正在进行网络流量和日志分析 但有很多从客户端传递的格式错误的标头 这些字符被转调或替换为 x 有谁知道它们来自哪里或为什么 这是某种安全尝试 还是更邪恶的行为 例子 xroxy connection Keep Alive cneoction
  • 有人在 Solaris 10x86 上安装了 Rails 3

    我想要一种在未连接到互联网的 Solaris 10 x86 服务器上安装 Rails 3 的简单方法 我可以下载文件并刻录到 DVD 或记忆棒并以这种方式安装 有些软件包是最好的 因为并不真正期待从源代码编译 有没有人做过这个或看过任何有关
  • 实体框架代码优先迁移和 Firebird

    我正在尝试在 Firebird 2 5 数据库上启用迁移 我正在使用 VS2015 ADO 驱动程序和实体提供程序已安装并正常工作 我对数据库进行了逆向工程 进行了必要的更改以使其正常工作 我可以在包管理器控制台上执行启用迁移 并添加迁移
  • 将 vCard 数据直接添加到系统地址簿

    我正在设计一个QR码阅读器 它需要检测并导入vCard格式 vcf 的联系人卡片 有没有办法直接将名片数据添加到系统地址簿中 或者我需要自己解析vCard并单独添加每个字段 如果您在 iOS 5 或更高版本上运行 以下代码应该可以解决问题