我正在尝试为我的应用制作一个动作扩展,用户可以在其中添加其当前位置以及其他一些数据。与Apple Maps App共享位置后,我调试了扩展程序,发现Maps发送了四个具有以下内容的提供商:
MKMapItem
以上所有内容均为NSSecureCoding
类型。从NSSecureCoding成功将强制转换为Data
并使用vCard的数据初始化String
到纯文本和url的String
是成功的,但是我还没有找到创建{{1 }}来自我收到的数据的对象。
这是我尝试过的:
MKMapItem
但是失败。我可能必须先将其转换为provider.loadItem(forTypeIdentifier: "com.apple.mapkit.map-item", options: nil) { (content, _) in
let item = content as! MKMapItem
}
,但找不到Data
的{{1}}的任何初始化程序
答案 0 :(得分:0)
使用NSKeyedUnarchiver
itemProvider.loadItem(forTypeIdentifier: "com.apple.mapkit.map-item", options: nil) { (item, error) in
guard let data = item as? Data else { return }
do {
guard let mapItem = try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? MKMapItem else { return }
print(mapItem)
} catch {
print("Error unarchiving mapItems, \(error)")
}