如何使用 ABPeoplePicker 获取电子邮件?

2023-12-07

我没有发现苹果的文档对于实际使用人员选择器获取数据非常有帮助,并且互联网上似乎没有太多其他信息:(我认为我需要在此功能中获取电子邮件:

- (BOOL)peoplePickerNavigationController:(ABPeoplePickerNavigationController *)peoplePicker shouldContinueAfterSelectingPerson:(ABRecordRef)person property:(ABPropertyID)property identifier:(ABMultiValueIdentifier)identifier
{

}

我可以在那里输入什么来获取所选人员的电子邮件?


Kal 的答案实际上是不准确的 - 即因为“ABMultiValueCopyValueAtIndex”采用索引而不是标识符。

标识符值是静态的(如枚举)

  • “家庭电子邮件”始终为“0”
  • “工作电子邮件”始终为“1”。

因此,当所选人员仅存储 1 封电子邮件(即“工作电子邮件”)时,它会崩溃。由于标识符是“1”,但我们需要索引“0”。

幸运的是,我们可以使用以下方法来获取索引:

int index = ABMultiValueGetIndexForIdentifier(emails, identifier);

Code:

if (property == kABPersonEmailProperty) {

    ABMultiValueRef emails = ABRecordCopyValue(person, property);

    NSString *count = [NSString stringWithFormat:@"Count: %d Identifier: %d", ABMultiValueGetCount(emails), identifier];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"alert" message:count delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alert show];
    [alert release];

    if(ABMultiValueGetCount(emails) > 0)
    {
        int index = ABMultiValueGetIndexForIdentifier(emails, identifier);
        CFStringRef emailTypeSelected = ABMultiValueCopyLabelAtIndex(emails, index);
        CFStringRef emailTypeSelectedLocalized = ABAddressBookCopyLocalizedLabel(ABMultiValueCopyLabelAtIndex(emails, index));
        CFStringRef emailValueSelected = ABMultiValueCopyValueAtIndex(emails, index);

        self.lblEmailType.text = (NSString *) emailTypeSelected;
        self.lblEmailTypeLocalized.text = (NSString *) emailTypeSelectedLocalized;
        self.lblEmailValue.text = (NSString *) emailValueSelected;
    }

    [ self dismissModalViewControllerAnimated:YES ];
    return NO;
}

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

如何使用 ABPeoplePicker 获取电子邮件? 的相关文章

  • 从 .Plist 加载数组

    我正在尝试从 Plist 中的数组加载数组 但它不起作用 该 plist 看起来像这样 这是我正在使用的代码 NSString path NSBundle mainBundle pathForResource DiseaseProperty
  • 两个滚动视图同时工作,一键触摸

    我正在其中开发应用程序 我必须一键同时处理两个滚动视图 这意味着如果我同时滚动一个滚动视图 另一个滚动视图必须随之滚动 如果这是可能的 那么如何才能做到呢 在包含两个滚动视图的视图控制器中实现 UIScrollViewDelegate 协议
  • Facebook 登录 - 如果存在用户帐户(并且未安装应用程序)登录失败

    我刚刚在测试我的应用程序时发现了这个问题 它真的开始让我烦恼 那么环境是这样的 没有安装 Facebook 应用程序 用户登录 iOS 系统帐户 在设置 gt Facebook 下 当我的应用程序第一次尝试对用户进行身份验证时 它会提供这面
  • OCUnit 无法识别导入的文件

    我正在我的 iPhone 应用程序上使用 XCode 3 2 3 和 iOS 4 0 上的 OCUnit 进行单元测试 我已成功设置测试环境以适当地通过和失败基本测试 但是当我导入自己的文件 在本例中为 UserAccount h 时 它无
  • iTunes Lookup API,获取iPhone 5应用程序截图

    I use iTunes API 查找通过 App ID 获取应用数据 即使应用程序是为iPhone5 在 JSON 中我得到3 5 inch屏幕截图 下截图网址 array 有什么办法可以得到4 inch 截图 可以使用非官方的 iTun
  • iOS 应用程序中的屏幕共享? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想与运行相同应用程序的其他设备共享
  • UIKeyboardFrameBeginUserInfoKey 和 UIKeyboardFrameEndUserInfoKey

    在管理键盘中文档 http developer apple com iphone library documentation StringsTextFonts Conceptual TextAndWebiPhoneOS KeyboardMa
  • iOS:自动调整大小不适用于 UIImageView

    我正在制作一个非常简单的应用程序来学习 Objective C 和 Xcode 该应用程序有一个 UIButton 和一个 UIImageView 当用户点击按钮时 图像从右到左以对角线运动向下移动 当它到达屏幕中的某个点时 它会重新生成以
  • 保留rootViewController?

    我想知道是否有人可以帮助我解决下面代码中的内存管理问题 我对 rootController 特别感兴趣 当我执行 initWithRootViewController 时它是否会被保留 或者它是否 这是我的猜测 通过窗口 addSubVie
  • 有什么方法可以限制核心数据中的重复条目吗?

    我一直在尝试在核心数据中添加对象 所以 我希望它不应该允许核心数据存储中出现重复的条目 怎么做 这是我与保存数据相关的代码 IBAction save id sender if name text isEqualToString addre
  • 从子视图导航控制器访问顶部导航控制器

    我有一个像这样设置的视图和控制器 标签 栏控制器 1 内是根视图控制器 2 内是一个以编程方式创建的导航控制器 它在根视图控制器中显示为子视图 我想做的是访问顶部选项卡栏 导航控制器 以便我可以将视图推送到上面 我尝试了parentView
  • 如何实现pickerView类的didSelectRow方法?

    我以前从未使用过选择器视图 我认为它类似于表视图类的 func tableView tableView UITableView didDeselectRowAtIndexPath indexPath NSIndexPath 方法 但是我无法
  • iOS 13:MPMediaPickerController - 内部错误/找不到请求的应用程序扩展

    看来一般MPMediaPicker在 ios13 ipad air 2 iphone SE 上不再工作 从那里复制的示例 1 1 没有显示媒体选择器https developer apple com documentation mediap
  • ipa 应用程序无法添加到我们的 itunes 库,它不是有效的应用程序

    我使用 xcode 6 和 swift 语言制作了一个未签名的 IPA 应用程序 我已压缩 app 文件并将其扩展名更改为 ipa 当我想在越狱的iPhone上安装这个 ipa文件时 出现以下错误 无法将应用程序 youtapp ipa 添
  • 如何以编程方式伪造 UIButton 的触摸事件?

    我正在编写一些单元测试 并且由于这个特定应用程序的性质 重要的是我要达到尽可能高的水平UI链尽可能 因此 我想做的是以编程方式触发按钮按下 就好像用户按下了按钮一样GUI 是的 是的 我could只需致电IBAction选择器 但同样 这个
  • 在线和离线管理 iPhone 应用程序

    我被困在一个点上 我也在离线管理我的应用程序 第一次我从网络服务获取所有配置文件数据并将其路径存储到 sqlite 中时 我在更新这些数据时遇到问题 例如如果图像发生更改 我应该如何通知我的应用程序 我在 Google 上搜索了它 唯一的解
  • 无法在 Swift 的 Storyboard 中加载 UIViewController XIB 文件

    我读了使用 XCode 故事板实例化使用 XIB 进行设计的视图控制器 https stackoverflow com questions 9155719 using xcode storyboard to instantiate view
  • 如何将 PhoneGap 调试控制台与 CLI 集成?

    PhoneGap 网站上的此页面http docs phonegap com en 3 3 0 guide cli index md html The 20Command Line 20Interface http docs phonega
  • Xcode 7 调试器不会中断内联标头函数

    过去五年我一直在各种 C 项目中使用 Xcode 没有出现这个问题 今天 我打开了一个较旧的项目 大约 2 年前 并尝试通过在该函数中放置一个活动断点来调试头文件中的内联函数 由于某种原因 调试器不会中断此代码 但是 如果我在调用该函数的
  • 如何使用 XCode 7 在故事板中将视图高度设置为屏幕高度的百分比

    我需要设计如下图所示的视图 我尝试过固定高度 也尝试过紧凑宽度和常规高度以及常规宽度和紧凑高度 但这些场景对我不起作用 如何在故事板中将视图高度设置为屏幕高度的百分比 我正在使用 Xcode 7 Basically you need to

随机推荐

  • 如何在 Powershell 中同时对多个服务器运行命令

    我正在寻找一种方法来同时重新启动多个服务器上的三个服务 我知道如何使用循环针对服务器列表重新启动服务 但由于我有许多服务器 因此需要很长时间才能等待每台服务器上的每个服务按顺序重新启动 有没有办法立即向所有服务器发送重新启动服务命令 而不是
  • Python:找出本地时区

    我想将日志文件中的 UTC 时间戳与本地时间戳进行比较 创建本地时datetime对象 我使用类似的东西 gt gt gt local time datetime datetime 2010 4 27 12 0 0 0 tzinfo pyt
  • 异步启动长时间运行的进程

    在我们的 Web 应用程序中 用户可以进行需要更新大量数据库表的更改 所有这些的加载时间最长可达 30 秒 我不希望用户在导航到另一个页面之前等待该操作完成 我已将长时间运行的代码放在自己的页面上 例如 updateinfo aspx 并尝
  • 在 .net 4.0 中使用实体框架与 Oracle 数据库 - 可能吗?

    我正在构建一个针对 Net 4 0 的应用程序 目前不能更高 我需要访问 Oracle Db 11g 并且我想使用实体框架 为了能够做到这一点 我知道我必须使用 Oracle 托管数据访问 Oracle ManagedDataAccess
  • “参数无效。”使用保存位图时

    我正在尝试以指定的编码质量保存位图 jpg 格式 但是 在调用保存方法时出现异常 参数无效 如果我省略 bmp save 中的最后两个参数 它就可以正常工作 EncoderParameters eps new EncoderParamete
  • 易失性、互锁性、锁定性

    假设一个类有一个public int counter由多个线程访问的字段 这int仅递增或递减 要增加此字段 应使用哪种方法 为什么 lock this locker this counter Interlocked Increment r
  • 使文本位于图像上的一行上方

    我正在开发一个项目 尝试在所有浏览器尺寸的图像上的一行上方添加文本 当您看到下面的 codpen 链接时 这一点会更清楚 我现在面临的问题是 一旦我将顶部值设置到正确的位置并更改浏览器宽度 文本就不再位于该行上方 text position
  • 每台服务器的套接字连接的实际/硬限制是多少

    我有许多客户端设备打开由 Windows 2008 R2 服务器上运行的服务公开的套接字连接 我想知道并发客户端连接数的硬限制是什么 根据本文 一个硬限制是 曾经 16 777 214 实际限制还取决于您的应用程序 例如 如果您为每个连接创
  • java.lang.IllegalStateException:使用 Auth.GOOGLE_SIGN_IN_API 时不得在 GoogleApiClient.Builder 中设置范围

    我正在使用带有身份验证 api 的驱动器 api 我需要先登录谷歌帐户 然后将文件上传到驱动器 问题是 当我仅使用未经身份验证的驱动器 api 时 显示无法登录 我首先使用 GoogleSignInOptions gso new Googl
  • 具有多个成员的高效运算符<

    假设一个类有多个与对象顺序相关的成员 例如 A T1 x T2 y 标准执行情况operator lt 我知道是 bool A operator lt const A a return x lt a x x a x y lt a y 但这对
  • 如何在 Windows 中使用 pyspark 启动 Spark Shell?

    我是 Spark 的初学者 并尝试按照此处的说明进行操作 了解如何使用 cmd 从 Python 初始化 Spark shell http spark apache org docs latest quick start html 但是当我
  • 在 IntelliJ 或 Android Studio 中使用 HTTP 作为默认值

    我知道这可能看起来像一个奇怪的请求 这可能有助于解释为什么谷歌研究没有帮助我找到答案 但由于一些防火墙问题 通过 HTTPS 连接到外部资源需要很长时间或完全超时 目前我的依赖项如下所示 dependencies compile fileT
  • IE9 中的 SVG 缩放问题

    在 IE9 中使用小 svg 时遇到问题 它在右侧被切断 不居中 Supposed to be a X My SVG
  • 安全规则 - 可以读取的数据列表?

    因此 我的应用程序具有在许多用户之间共享的 对话 对话 有很多 用户 我可以在特定对话中使用模拟器让作者获得 read 授权 但我不确定如何在以用户身份登录时获取对话列表 我无法使用 on child added 在 对话 上 因为 对话
  • 如何在 android 中打开 SQLite 数据库?

    如果我使用另一个应用程序而不是通过 android 运行时创建数据库 假设使用 SQLite Manager firefox 扩展 那么我如何在我的 android 应用程序中使用该数据库 生成的 Sqlite 文件 由于 SQLite 是
  • 如何使用 Google 的 Gson API 正确反序列化 JSON?

    简而言之 这是我要在 JAVA 中解析的 JSON 对象的草图 object1 item1 String Array Object item2 lt gt more items object2 lt gt more objects 这些是P
  • 当我尝试从中调用 Java 方法时,Matlab 锁定 jar 文件

    我正在用 Java 开发一个库 需要在 Matlab 中使用它 Java 和 Matlab 代码都在不断开发中 因此 每当我重建 Java 代码并创建新的 jar 文件时 我都需要在 Matlab 代码中重新加载它并在那里使用新的 jar
  • 何时使用 function() 、 function 或 () => function(callback)

    我一直在寻找一个好的解释 所以对我来说一切都很清楚 例子
  • 带动态分配的 MPI 矩阵乘法:段。过错

    我正在 OpenMP 中制作矩阵乘法程序 但收到以下错误消息 Mecha Liberta 12337 Process received signal Mecha Liberta 12337 Signal Segmentation fault
  • 如何使用 ABPeoplePicker 获取电子邮件?

    我没有发现苹果的文档对于实际使用人员选择器获取数据非常有帮助 并且互联网上似乎没有太多其他信息 我认为我需要在此功能中获取电子邮件 BOOL peoplePickerNavigationController ABPeoplePickerNa