首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在操作扩展中将NSSecureCoding转换为MKMapItem

如何在操作扩展中将NSSecureCoding转换为MKMapItem
EN

Stack Overflow用户
提问于 2018-09-07 09:38:02
回答 1查看 462关注 0票数 3

我正在尝试为我的应用程序做一个Action扩展,用户可以在其中添加他当前的位置以及其他一些数据。在与Apple Maps应用程序共享了一个位置之后,我调试了这个扩展,发现Maps发送了四个提供程序,内容如下:

  • 选定位置的vCard
  • 用于选定位置的Apple Maps URL
  • 纯文本,它是所选位置的名称。
  • 一个MKMapItem

上面的所有内容都是NSSecureCoding类型的。强制转换为Data,并使用vCard的数据初始化String,将纯文本强制转换为String,url从NSSecureCoding获得成功,但我还没有找到从接收到的数据创建MKMapItem对象的方法。

以下是我尝试过的:

代码语言:javascript
复制
provider.loadItem(forTypeIdentifier: "com.apple.mapkit.map-item", options: nil) { (content, _) in
    let item = content as! MKMapItem

}

但失败了。我可能得先把它转换成Data,但是我找不到MKMapItemData的任何初始值

EN

回答 1

Stack Overflow用户

发布于 2019-03-27 23:19:38

使用NSKeyedUnarchiver

代码语言:javascript
复制
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)")
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52219700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档