我有一个早期版本的
Swift写下面的类.
Swift 2编译器警告
在iOS 9.0中已经不推荐使用’kABPersonAddressstreetKey’:使用CNPostalAddress.street
并给出错误
‘Cannot find an initializer for type ‘MKPlacemark’ that accepts an
argument list of type ‘(coordinate: CLLocationCoordinate2D,
addressDictionary: [String : String?])’
我意识到可选的是解决错误,但是我尝试的似乎并不能解决问题.这是因为我是一个新手快速,任何帮助将不胜感激.
import Foundation
import MapKit
import AddressBook
class Artwork: NSObject,MKAnnotation {
let title: String?
let locationName: String
let discipline: String
let coordinate: CLLocationCoordinate2D
init(title: String,locationName: String,discipline: String,coordinate: CLLocationCoordinate2D) {
self.title = title
self.locationName = locationName
self.discipline = discipline
self.coordinate = coordinate
super.init()
}
var subtitle: String? {
return locationName
}
// annotation callout info button opens this mapItem in Maps app
func mapItem() -> MKMapItem {
let addressDictionary = [String(kABPersonAddressstreetKey): subtitle]
let placemark = MKPlacemark(coordinate: coordinate,addressDictionary: addressDictionary)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = title
return mapItem
}
}
解决方法
用导入联系人替换导入AddressBook,并用String(CNPostalAddressstreetKey)替换String(kABPersonAddressstreetKey)
import Foundation
import MapKit
import Contacts
class Artwork: NSObject,coordinate: CLLocationCoordinate2D) {
self.title = title
self.locationName = locationName
self.discipline = discipline
self.coordinate = coordinate
super.init()
}
var subtitle: String? {
return locationName
}
// annotation callout info button opens this mapItem in Maps app
func mapItem() -> MKMapItem {
let addressDictionary = [String(CNPostalAddressstreetKey): self.subtitle!]
let placemark = MKPlacemark(coordinate: coordinate,addressDictionary: addressDictionary)
let mapItem = MKMapItem(placemark: placemark)
mapItem.name = title
return mapItem
}