为RideIntent创建自定义CLPlacemark

10

我正在尝试使用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)

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

对'member(init(placemark:))'的引用不明确

有什么想法吗?

文档:

3个回答

20

刚刚发现在iOS 12/Xcode 10中,您还需要包含Contacts框架,因为postaladdress参数需要CNPostalAddress类来进行初始化

import Intents
import Contacts

1
如果不是你的评论,我永远不会发现这个问题! - yspreen

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)

我尝试了你的解决方案,但仍然得到相同的错误 :( 你导入了哪些框架?我尝试了CoreLocation和Intents... 仍然出现错误 :( - Georg

0

你需要使用

init(location:name:postalAddress);

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接