8

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

我找到了这个解决方案:

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

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

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

对成员 'init(placemark:)' 的模糊引用

有什么想法有什么问题吗?

文档:

4

4 回答 4

15

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

import Intents
import Contacts
于 2018-10-22T15:18:37.307 回答
2

通过继承 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)
于 2017-04-19T15:08:27.477 回答
0

您还可以替换 MKPlacemark 来代替它公开更多初始化程序(在http://szulctomasz.com/2015/07/01/ios-unit-testing-in-swift-and-clplacemark-mocking.html中找到)

于 2017-09-06T20:31:31.523 回答
0

你需要使用

init(location:name:postalAddress);

placemarkWithLocation 调用是objective-C 不迅速,​​因此它抛出该错误消息的原因。

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

于 2017-04-18T14:49:43.423 回答