为RideIntent创建自定义CLPlacemark

时间:2017-04-18 14:41:07

标签: ios swift core-location sirikit intents-extension

我尝试使用Intents框架创建自定义CLPlacemark。 我正在导入' Intents'在文件开头。

我找到了这个解决方案:

let waypointLocation = CLLocation(latitude: 50.00, longitude: 8.00)
let waypointName = "Some Name"

let w1 = CLPlacemark.init(location: waypointLocation,
                                      name: waypointName,
                                      postalAddress: nil)

不幸的是,上面的代码给出了以下错误消息:

  

对成员&#init;(地标:)'

的模糊引用

任何想法有什么不对?

文档:

4 个答案:

答案 0 :(得分:3)

刚刚发现,在iOS 12 / Xcode 10中,您还必须包括Contacts框架,因为postaladdress参数具有该初始化程序所需的类CNPostalAddress

import Intents
import Contacts

答案 1 :(得分:1)

通过继承CLPlacemark,可以使用 Intents 框架协议 init(location:name:postalAddress)

项目的某个地方:

class MyPlacemark: CLPlacemark {}

您创建自定义CLPlacemark的代码:

let placeLocation = CLLocation(latitude: 50.00, longitude: 8.00)
let placeName = "Some name"
let customPlacemark = MyPlacemark(location: w1Location, name: w1Name, postalAddress: nil)

答案 2 :(得分:0)

您需要使用

init(location:name:postalAddress);

placemarkWithLocation调用是Objective-C不快速,因此它抛出该错误消息。

在文档中,您将在右侧看到语言选择。 init(location:name:postalAddress是您创建新地点标记所需的快速通话。

答案 3 :(得分:0)

您也可以替换MKPlacemark代替暴露更多初始值设定项(在http://szulctomasz.com/2015/07/01/ios-unit-testing-in-swift-and-clplacemark-mocking.html中找到)