创建与PPT通信所需的CFMessage端口时出错



我尝试使用UIViewControllerRepresentable协议在SwiftUI应用程序中呈现CNContactPickerViewController。正如我已经读到的,这似乎有一个已知的问题不起作用,但我使用这里描述的变通方法使它工作得很好。

然而每当CCD_。,我在输出日志中得到以下错误:

[PPP]创建与PPT通信所需的CFMessage端口时出错。

我试图找到对此的解释,但在互联网上似乎没有答案。有人知道这个错误是从哪里来的吗?PPT是什么?这个错误可能与CNContactPickerViewController不能正常使用SwiftUI有关吗?

我第一次在iOS 14测试版和Xcode 12测试版中注意到这个错误,它仍然存在于iOS 14.2和Xcode 12.2中。我不知道这个错误是否也出现在iOS 13上
我已经对此发布了反馈报告。

我使用托管UINavigationController编写了一个解决方案,下面是我的代码:

import SwiftUI
import ContactsUI
struct ContactPickerView: UIViewControllerRepresentable {

@Environment(.presentationMode) var presentationMode

func makeUIViewController(context: Context) -> UINavigationController {
let navController = UINavigationController()
let controller = CNContactPickerViewController()
controller.delegate = context.coordinator
navController.present(controller, animated: false, completion: nil)
return navController
}

func updateUIViewController(_ uiViewController: UINavigationController, context: Context) {
print("Updating the contacts controller!")
}

// MARK: ViewController Representable delegate methods
func makeCoordinator() -> ContactsCoordinator {
return ContactsCoordinator(self)
}

class ContactsCoordinator : NSObject, UINavigationControllerDelegate, CNContactPickerDelegate {
let parent: ContactPickerView
public init(_ parent: ContactPickerView) {
self.parent = parent
}

func contactPickerDidCancel(_ picker: CNContactPickerViewController) {
print("Contact picked cancelled!")
parent.presentationMode.wrappedValue.dismiss()
}

func contactPicker(_ picker: CNContactPickerViewController, didSelect contact: CNContact) {
print("Selected a contact")
parent.presentationMode.wrappedValue.dismiss()
}
}
}

我用它就像:

Button("Select a contact") {
openSelectContact.toggle()
}
.sheet(isPresented: $openSelectContact, onDismiss: nil) {
ContactPickerView()
}

最新更新