如何使用 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 获取电子邮件? 的相关文章

  • 如何打开定位服务

    当有人第一次拒绝时 如何从实际应用程序重新打开定位服务 我可以选择关闭或打开它 您只能提示他们在屏幕上打开定位服务 如下所示 UIApplication sharedApplication openURL NSURL URLWithStri
  • XCode 无法将 iPhone 应用程序部署到 iPhone 3GS

    因此 我构建了我的 iPhone 应用程序 它在模拟器中运行良好 因此我想将其部署到我的 iPhone 上进行最后一轮测试 然后再使用我的分发配置文件进行公开 Beta 测试 我已经这样做过很多次了 从来没有出现过问题 然而 自从上次测试运
  • iPhone 的电子书框架

    我有一本书想作为 iPhone 应用程序发布 有谁知道我可以使用免费 或便宜 的框架来实现这一目标 换句话说 我想为我的书创建一个独立的 XCODE 项目 其中包含 iPhone 用户将本书作为独立应用程序阅读所需的所有代码 我见过 O R
  • 如何知道我的应用程序使用了多少 iCloud 空间?

    有没有办法查看我的应用程序正在备份到 iCloud 的内容以及它消耗了多少内存 Settings gt iCloud gt Storage Backup gt Manage Storage将显示正在备份的总计内容 iOS 会备份位于应用程序
  • 如何在 iOS 9 上可靠地检测是否连接了外部键盘?

    在 iOS 9 之前 确定是否连接外部键盘的最可靠方法是监听UIKeyboardWillShowNotification并使文本字段成为第一响应者 如中所述这个问题 https stackoverflow com questions 289
  • 如何使用 NSUserDefaults 在 Swift 中存储自定义类的数组?

    我有一个名为的自定义类Person当某人输入信息时 它会存储有关某人的各种属性 class Person Person dictionary variable var name String var age String var html
  • 持久化 UINavigationItem 的 rightBarButtonItem 属性

    这可能是一个愚蠢的问题 但是有可能保持正确的吗 UIBarButtonItem跨由一个管理的多个视图UINavigationController 我的一系列观点通常具有相同的权利UIBarButtonItem 但是当我将新视图推送到我的UI
  • UIScrollView setZoomScale 将应用的旋转设置回零

    我已经从事地图替换工作很长一段时间了 整个事情的工作原理是UIScrollView由一个支持CATiledLayer 为了旋转我的地图 我旋转图层本身 使用CATransform3DMakeRotation 到目前为止效果很好 但如果我打电
  • 如何使用AudioKit保存音频文件?

    我有音频文件 我给它做了一些效果 let pitchshifter AKPitchShifter self audioPlayer pitchshifter shift 10 AudioKit output pitchshifter 如果我
  • 在 XCode 中链接静态 ObjC 库的过程

    我正在尝试链接到静态库 但不断收到链接器错误 我发现了一些发布示例的网站 但我无法看到我做错了什么 首先 我创建一个链接到我的库的项目 添加 gt 现有文件找到我的 xcodeproj 文件选择 将项目复制到目标组文件夹 选择我的宿主项目作
  • 忽略触摸事件,让其下面的视图处理触摸?

    我有一个用户可以触摸的可拖动视图 但它的某些矩形将没有图像 alpha 0 当用户单击透明区域时 我能够在没有 alpha 信息的情况下构造透明区域 我希望透明区域下方的视图 同一类 来检测触摸 我的策略是当用户触摸透明区域时让视图忽略触摸
  • 如何禁用 iPhone 邮件应用程序中的电话号码链接?

    我的公司正在发送数字电子邮件收据 但遇到了 iPhone Mail 检测数字数据并将其自动链接为电话号码的问题 我已经看到元标记应该可以解决 iPhone 上的 Mobil Safari 中的问题 但该技巧似乎不适用于 Mail 有谁知道如
  • Apple Watch 预构建操作可更改故事板 customModule 引用

    我目前有一个项目 其中包含同一应用程序的 3 个不同版本 不同的品牌等 该项目运行得很好 从那时起 我添加了 3 个新的 Apple Watch 目标 每个应用程序 版本 1 个 其中 2 个引用 主 Apple Watch 目标中的文件
  • ios水平居中约束问题?

    I am having hard time in learning constraints auto layout in iOS I have used any width any height I have a storyboard sc
  • insertNewObjectForEntityForName:

    我使用 Xcode xcdatamodel 文件编辑器设置了一个实体 我创建了一个名为 Person 的实体 添加了一些属性 然后生成了一个 m 文件来表示它 一切都很好 现在 当我去编写一行代码时 例如 Person person Per
  • UIImageJPEGRepresentation 在视网膜显示屏上提供 2x 图像

    我有这段代码 它创建一个图像 然后向其添加一些效果并缩小其大小以使其largeThumbnail UIImage originalImage UIImage imageWithData self originalImage thumbnai
  • PFQueryTableViewController 错误

    我正在遵循在线教程 使用 Parse 作为后端创建照片共享应用程序 我已经运行了两次教程 两次都从头开始创建应用程序 但在同一位置仍然出现相同的错误 我到处寻找解决方案 但仍然没有运气 我正在使用 PFQueryTableViewContr
  • UIView晃动动画

    我试图在按下按钮时使 UIView 摇动 我正在调整我找到的代码http www cimgf com 2008 02 27 core animation tutorial window shake effect http www cimgf
  • 在发生更改事件时将货币格式重新应用到 UITextField

    我正在使用一个包含本地化货币值的 UITextField 我看过很多关于如何使用此功能的帖子 但我的问题是 如何在每次按键后将货币格式重新应用到 UITextField 我知道我可以通过以下方式设置和使用货币格式化程序 NSNumberFo
  • 在 UIScrollview 上显示缩略图的最佳方法是什么(从服务器下载)

    我想在 UIScrollview 如照片应用程序 上显示许多图像 作为缩略图 所有图像将从服务器下载 据我所知 有几种选择 1 通过创建 UIImageviews 然后将它们添加为主滚动视图上的子视图 2 通过子类化一个UIView类 然后

随机推荐

  • 如何在 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