首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在swift 3中获取联系人不起作用

在Swift 3中获取联系人不起作用可能是由于以下几个原因导致的:

  1. 权限问题:在iOS中,获取联系人需要用户授权。请确保你的应用已经请求了适当的权限。你可以使用CNContactStore类来请求权限并获取联系人。具体的权限请求代码如下:
代码语言:txt
复制
import Contacts

let contactStore = CNContactStore()
contactStore.requestAccess(for: .contacts) { (granted, error) in
    if granted {
        // 获取联系人
    } else {
        // 用户拒绝了权限请求
    }
}
  1. 访问联系人的代码错误:在获取联系人之前,你需要使用CNContactFetchRequest类来设置你需要获取的联系人的属性。然后使用CNContactStoreenumerateContacts(with:usingBlock:)方法来获取联系人。以下是一个获取所有联系人的示例代码:
代码语言:txt
复制
import Contacts

let contactStore = CNContactStore()
let keysToFetch = [CNContactGivenNameKey, CNContactFamilyNameKey, CNContactPhoneNumbersKey]

let fetchRequest = CNContactFetchRequest(keysToFetch: keysToFetch as [CNKeyDescriptor])
do {
    try contactStore.enumerateContacts(with: fetchRequest) { (contact, stop) in
        // 处理联系人
    }
} catch {
    // 获取联系人失败
}
  1. Swift版本不兼容:如果你的代码是在较旧的Swift版本中编写的,可能需要进行一些语法调整以适应Swift 3。请确保你的代码已经更新到Swift 3的语法。

以上是一些可能导致在Swift 3中获取联系人不起作用的常见原因。如果你能提供更多的上下文信息或错误消息,我可以给出更具体的帮助。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Swift中的命名空间

命名空间namespaceC++、C#里面是一个常见概念,Swift中也引入了这样一个机制,下面来探索一下这个命名空间的来龙去脉。...一、为什么需要命名空间 简而言之一句话:为了避免命名的冲突 开发中,尤其是多模块开发中,很难保证模块之间的类名不会重复,为了保证不同模块下同名的类可以正常使用而不报错,引入命名空间来保证即使创建的类名一样...可以看出,Swift中的类名的完整形式其实是“命名空间+类名”。...修改命名空间.png 三、命名空间如何获取 既然知道可以通过Info.plist获取命名空间,那么如何在程序中获取呢?...void)viewDidLoad { [super viewDidLoad]; [self addNavigationChildVC:@"ContactViewController" :@"联系人

2.2K30
  • iOS开发常用之图像浏览及处理

    MWPhotoBrowser - 一个非常不错的照片浏览器,github的star接近3000个,解决MWPhotoBrowser中的SDWebImage加载大图导致的内存警告问题。...RSKImageCropper - 适用于iOS的图片裁剪器,类似联系人应用程序,可上下左右移动图片选取最合适的区域。...AFImageHelper - swift,一套针对UIImage和UIImageView的实用扩展库,功能包含填色和渐变,裁剪,缩放以及具有缓存机制的在线图片获取。...更换头像 - 用户选取从相机或者相册获取图片,并且显示查看上。 DouBanMeinv.swift - 抓取豆瓣美女图片,瀑布流显示。...YLFaceuDemo - 直播应用中添加Faceu贴纸效果.Faceu贴纸效果其实就是人脸上贴一些图片,同时这些图片是跟随着人脸的位置改变的。说明

    3.9K60

    iOS系统架构及常用框架

    大部分iOS开发者都是跟Cocoa Touch layer打交道 5、常用的IOS系统框架 AddressBook.framework:提供访问存储核心数据库中用户联系人信息的功能 AddressBookUI.framework...:提供一个用户界面,用于显示存储地址簿中的联系人信息 AudioToolbox.framework:提供音频录制和回放的底层API,同时也负责管理音频硬件 AudioUnit.framework:提供一个接口...CocoaAsyncSocket: iOS开发中使用Socket通信,一般都是用第三方库AsyncSocket SDWebImage:又一大网络大户, 网络图片获取及缓存处理。...SimpleCarrier:简单的运营商信息获取 UI组件库 YYKit:是一组庞大、功能丰富的 iOS 组件,包含Model解析、图片加载、缓存等基础服务,都是基于Category设计的,使用方便且性能高于一些老的框架...开头的都属于CoreGraphics框架,它提供的都是C语言的函数接口,是可以ios和mac os通用的。

    7.5K21

    想搞ios不会这个怎么行,为你推荐一份swift书单!

    全书共分5部分,diyi部分介绍了Swift的一些基础知识,第二部分介绍了基于Swift语言的中高级内容,第三部分主要介绍了Swift与Objective-C/C/C++的混合编程等相关问题,第四部分介绍了基于...作者简介 关东升,一个IT领域摸爬滚打20年的程序员、培训师、作者,另著有《iOS开发指南(第5版)》《Android网络游戏开发实战》《Cocos2d-x实战》系列等书。...书中系统讲解了iOS和macOS平台上,使用苹果的Swift语言开发iPhone、iPad和Mac应用的基本概念和编程技巧。...构建真实可用的OS X和iOS应用,动手实践Swift编程语言。 内容简介 《Swift学习手册》分为四部分,涵盖以下内容:Swift基础知识:学习Swift的面向对象特性,以及各种开发工具。...iOS应用开发:使用多媒体、联系人、位置、通知和iCloud 构建一个功能完善的iOS记事本应用。高级应用扩展:支持Apple Watch,学习如何调试、监控和测试全部三个Swift应用。

    1.1K00

    Swift 笔记#1 - 10 分钟掌握 Swift Package Manager

    视频讲解 视频内容 音频讲解 文字讲解 Swift Package Manager(Swift 包管理器,一般简称 SwiftPM 或者 SPM)是苹果官方提供的一个用于管理源代码分发的工具,旨在使分享代码和复用其他人的代码变得更加容易...经过本次课的学习,你将收获: 相当于看完官方教程文章(https://swift.org/package-manager/) 了解包管理相关知识,理解 Module、Package、Product 等概念...executable 为方便理解,以生活中的 “快递书籍” 作为类比,Modules 就是我们想要快递的 书籍,这是我们真正有价值的物件,而 Package 则是快递公司提供的 快递包装盒,上面粘贴有快递单号和联系人信息...3、如何创建一个 Package(具体见视频) 通过菜单添加 “Swift Package” Package.swift 中声明依赖库的关系 引用依赖库,写代码就完了 4、如何本地调试依赖(具体见视频...) 拖入依赖包到 Xcode 调试依赖代码 打 tag + push git 关于「JSCON专栏﹒Swift 笔记」 “Swift 笔记”专栏,隶属于 JSCON 专栏系列,将自学 Swift 过程中个人认为的知识以简短视频方式呈现

    1.9K00

    Swift 基础之可选

    然而,这只 对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如 NSNotFound)来暗示值缺失。...当你确定可选包确实含值之后,你可以可选的名字后面加一个感叹号(!)来获取值。这个惊叹号表示“我知道这个可选有值,请使用它。”...如果转换成功,actualNumber 常量可以 if 语句的第一个分支中使用。它已经被可选包含 的值初始化过,所以不需要再使用!后缀来获取它的值。... Objective-C 中,nil 是一个指向 不存在对象的指针。 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选都可以被设置为 nil,不只是对象类型。...隐式 解析可选主要被用在 Swift 中类的构造过程中,请参考类实例之间的循环强引用。 一个隐式解析可选其实就是一个普通的可选,但是可以被当做非可选来使用,并不需要每次都使用解析来获取可选值。

    78130

    Swift教程(一)--基础内容

    lines */ 分号 和许多其他的语言不同,Swift 并不要求你每一句代码结尾写分号( ; ),当然如果你想写的话也没问题。...: let http200Status = (statusCode: 200, description: "OK") 命名之后,你就可以通过访问名字来获取元素的值了: print("The status...一个用来获取网页的函数可能会返回一个 (Int, String) 元组来描述是否获取成功。相比只能返回一个类型的值,元组能包含两个不同类型值,他可以让函数的返回信息更有用。...可选项意味着:这里有一个值,它等于X或者这里根本没有值 首先明确的一个概念 1.Objective-C中的nil:表示缺少一个合法的对象,是指向不存在对象的指针,对结构体、枚举等类型不起作用(会返回NSNotFound...) 2.Swift中的nil:表示任意类型的值缺失,是一个确定的值,要么是该类型的一个值要么什么都没有(即为nil) Swift中Optional(可选类型)是一个含有两种情况的枚举,None 和 Some

    1.3K30

    苹果新系统很鸿蒙!iPad终于能写代码了,iPhone竟成异地恋神器 | WWDC 2021

    对于程序员来说,一个好消息是iPad终于可以写代码了,过去iPad上的Swift Playground一直是编程初学者的入门学习工具。 ?...不过缺点也显而易见,Swift Playground仅支持编译Swift编写的苹果App。 至于其他编程语言还不支持,看来只有VS Code登上iPad,才能让程序员真正感受到生产力。 ?...你可以 Safari 隐私报告中对这些被阻止的跟踪开启“上帝视角”。 这真是透明度和控制度同时兼得啊! 他们还推出了App隐私报告。 它类似于Android 12中的相同功能,但它包括了联系人。...然后是Siri,今年的亮点是现在通过语音识别,即使没有互联网的情况下也可以畅用无阻。 ? 最后是iCloud,现在可以添加新的方式来恢复帐户了。 你可以将家人和朋友添加到恢复联系人列表中。...虽然他们无法访问您的帐户,但如果你哪天无法访问了,可以给他们打电话以获取重新登录的权限。 ?

    1.3K30

    Swift入门: 数组

    数组允许您将许多值组合到一个集合中,然后根据它们集合中的位置访问这些值。...但如果你试着读songs[3],你的Playground就会停止工作——如果你一个真正的应用程序中试过,它就会崩溃! 因为您通过给数组三个字符串来创建数组,所以Swift知道这是一个字符串数组。...您可以操场上使用一个特殊命令来确认这一点,该命令将打印出任何变量的数据类型,如下所示: var songs = ["Shake it Off", "You Belong with Me", "Back...如果你想创建数组然后稍后填充它,事情就不那么简单了——下面这种语法不起作用: var songs: [String] songs[0] = "Shake it Off" 原因是一开始看起来不必要的迂腐,...它只是说某个地方上会有一个数组,它会保存字符串。

    76210

    短信过滤 APP 开发

    这里需要注意的是,根据文档的说法,短信过滤不支持iMessage和通讯录中联系人短信的过滤,仅支持未知联系人的SMS和MMS。...resultFilterAction } } catch { print(error) } return filterAction }}然后MessageFilterExtension.Swift...上面的步骤是通过固定的训练模型来匹配的逻辑,步骤是:获取短信数据集通过 CoreML 使用数据集训练并生成模型项目中使用模型,进行判断这种方式生成的模型其数据固定,每次更新模型需要重新训练并导入,然后更新...假设方案一:首先, APP 中边训练边更新,大概思路如下:更新模型,需要知道一条数据的内容和数据的分类,所以如果要在 APP 中训练模型,就需要通过另外的办法获取到分类,要不然用模型得到分类再回过头来训练模型... Extension 中,通过 URL 获取这个目录下的模型文件来进行过滤。

    41230

    碰撞和掩码-将物理属性应用于物件

    SKPhysicContactDelegate 我们需要将此方法调用到GameScene以联系人开始或结束时启用响应。...让我们physicsWorld上设置contactDelegate属性。didMove函数中,将此代码设置节点的初始化之上。...结构体 Collision Extension中,我们将添加一个结构,它是一个“命名类型”。Swift中,“struct”允许您封装相关的属性和行为,并为它们提供关键字。...enum Mask: Int { } 位掩码和原始值 枚举掩码中,我们将声明四种情况:敌人kill,玩家,奖励和地面。由于我们没有为它们分配原始值,因此Swift会自动为它们分配一个。...这是一个高级主题,因此这里有一个链接以获取更多信息。在位操作之后,敌人的位掩码的值为1,玩家为2,奖励为4,地面为8。

    95130

    Swift基础 继承

    Swift基础 - 继承 翻译自:https://docs.swift.org/swift-book/LanguageGuide/Inheritance.html 一个类可以从另一个类继承方法、属性和其他特征...继承是一种基本行为,可以将类与 Swift 中的其他类型区分开来。 Swift中的类可以调用和访问属于其超类的方法、属性和下标,并可以提供这些方法、属性和下标的覆盖版本,以细化或修改其行为。...此方法实际上对基本Vehicle实例不起作用,但稍后将由Vehicle子类自定义: class Vehicle { ​ var currentSpeed = 0.0 ​ var description...压倒一切的财产获取者和设定者 您可以提供自定义获取器(如果适用,并酌情提供设置器)来覆盖任何继承的属性,无论继承的属性是源代码中实现为存储的还是计算属性。...您可以通过子类属性重写中同时提供获取器和设置器来将继承的只读属性呈现为读写属性。但是,您不能将继承的读写属性显示为只读属性。 注意 如果您提供设置器作为属性覆盖的一部分,您还必须为该覆盖提供获取器。

    11000
    领券