为 RideIntent 创建自定义 CLPlacemark
Create custom CLPlacemark for RideIntent
我正在尝试使用 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)
不幸的是,上面的代码给我以下错误信息:
Ambiguous reference to member 'init(placemark:)'
有什么问题吗?
文档:
- init(location:name:postalAddress:) https://developer.apple.com/reference/corelocation/clplacemark/2132103-init
你需要使用
init(location:name:postalAddress);
placemarkWithLocation 调用是 objective-C 而不是 swift 因此它抛出该错误消息的原因。
在文档中,您会在右侧看到语言选择。 init(location:name:postalAddress
是您需要创建新地标的 swift 调用。
通过子类化 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)
您也可以替换为 MKPlacemark,它公开了更多的初始化程序(在 http://szulctomasz.com/2015/07/01/ios-unit-testing-in-swift-and-clplacemark-mocking.html 中找到)
刚刚发现在 iOS 12 / Xcode 10 中你还必须包含 Contacts 框架,因为 postaladdress 参数具有此初始化程序所需的 class CNPostalAddress
import Intents
import Contacts
我正在尝试使用 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)
不幸的是,上面的代码给我以下错误信息:
Ambiguous reference to member 'init(placemark:)'
有什么问题吗?
文档:
- init(location:name:postalAddress:) https://developer.apple.com/reference/corelocation/clplacemark/2132103-init
你需要使用
init(location:name:postalAddress);
placemarkWithLocation 调用是 objective-C 而不是 swift 因此它抛出该错误消息的原因。
在文档中,您会在右侧看到语言选择。 init(location:name:postalAddress
是您需要创建新地标的 swift 调用。
通过子类化 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)
您也可以替换为 MKPlacemark,它公开了更多的初始化程序(在 http://szulctomasz.com/2015/07/01/ios-unit-testing-in-swift-and-clplacemark-mocking.html 中找到)
刚刚发现在 iOS 12 / Xcode 10 中你还必须包含 Contacts 框架,因为 postaladdress 参数具有此初始化程序所需的 class CNPostalAddress
import Intents
import Contacts