swift头文件找不到'CNContactPickerDelegate'的协议声明
Posted
技术标签:
【中文标题】swift头文件找不到\'CNContactPickerDelegate\'的协议声明【英文标题】:swift header file cannot find protocol declaration for 'CNContactPickerDelegate'swift头文件找不到'CNContactPickerDelegate'的协议声明 【发布时间】:2018-04-25 15:45:09 【问题描述】:我正在尝试添加与此问题相关的足够代码和信息。
我想使用本地联系人列表来获取电话号码。所以,我更喜欢使用 ios9 及更高版本支持的“联系人”框架。
当我将这些委托方法添加到我的代码时。我从 Swift 头文件(ProjectName-Swift.h 文件)中收到错误消息。我在谷歌上搜索,但没有找到任何解决方案。我很确定,“联系人”框架导致了“导入循环”问题。有人有什么建议吗?
// Calling CNContactPickerViewController method
func clickedAdressBook()
let contactPicker = CNContactPickerViewController()
contactPicker.delegate = self
self.present(contactPicker, animated: true, completion: nil)
// to handle ContactsDelegate delegate metods
extension MoneyTransferToGsmVC : ContactsDelegate
为了解决这个问题,我创建了从 CNContactPickerDelegate 扩展而来的新协议。但是没用
import UIKit
import Foundation
import Contacts
import ContactsUI
protocol ContactsDelegate : CNContactPickerDelegate
当我添加上述扩展时,我遇到了错误。
【问题讨论】:
信息不足。请不要只显示代码中的一些点点滴滴。找出所有重现问题所需的代码并显示它。 (例如,创建一个普通的新项目并添加足够的代码来自己重现问题,然后描述或发布该项目。) 嗨@matt,我无法粘贴所有代码/项目。我尝试用代码截断、屏幕截图和表达式来解释我的问题。我认为,您无法重现此问题,因为它的相关项目文件是“导入循环”。如果您想了解具体信息,可以询问。 我确实问过了。您使用了很多没有解释的类型名称。解释他们。 我添加了从 CNContactPickerDelegate 扩展而来的 ContactsDelegate 协议。 您希望 MoneyTransferToGsmVC 了解 ContactsDelegate 的问题吗?但它不能,因为你没有标记它@objc
。您的扩展名也是如此。没有标记 @objc
的内容对 Objective-C 是隐藏的。
【参考方案1】:
我找到了解决办法。
我知道,这个答案不是一个好的选择。但这对我有用。
首先创建一个新的 .h 文件来复制“Swift Header File”。就我而言,我创建了“ProjectName-SwiftFixed.h”。
然后,我在我的代码中使用 #import "ProjectName-SwiftFixed.h" 而不是 #import "ProjectName-SwiftFixed.h"。
【讨论】:
以上是关于swift头文件找不到'CNContactPickerDelegate'的协议声明的主要内容,如果未能解决你的问题,请参考以下文章