我正在制作此应用,并不断收到错误消息“ LocationsStorage”类型的值没有成员“ saveclLocationToDisk”
我不知道问题出在哪里,我什至尝试研究Apple网站上的文档,但我仍然不知道问题出在哪里。该行位于第4节之后
import UIKit
import CoreLocation
import UserNotifications
@UIApplicationmain
class AppDelegate: UIResponder,UIApplicationDelegate {
var window: UIWindow?
static let geoCoder = CLGeocoder()
let center = UNUserNotificationCenter.current()
let locationmanager = CLLocationmanager()
func application(_ application: UIApplication,didFinishlaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
let rayWenderlichColor = UIColor(red: 0/255,green: 104/255,blue: 55/255,alpha: 1)
UITabBar.appearance().tintColor = rayWenderlichColor
center.requestAuthorization(options: [.alert,.sound]) { granted,error in
}
locationmanager.requestAlwaysAuthorization()
locationmanager.startMonitoringVisits()
locationmanager.delegate = self as? CLLocationmanagerDelegate
locationmanager.distanceFilter = 35
locationmanager.allowsBackgroundLocationUpdates = true
locationmanager.startUpdatingLocation()
return true
}
}
extension AppDelegate: CLLocationmanagerDelegate {
func locationmanager(_ manager: CLLocationmanager,didVisit visit: CLVisit) {
// create CLLocation from the coordinates of the CLVisit
let clLocation = CLLocation(latitude: visit.coordinate.latitude,longitude: visit.coordinate.longitude)
AppDelegate.geoCoder.reverseGeocodeLocation(clLocation) { placemarks,_ in
if let place = placemarks?.first {
let description = "\(place)"
self.newVisitReceived(visit,description: description)
}
}
}
func locationmanager(_ manager: CLLocationmanager,didUpdateLocations locations: [CLLocation]) {
// 1
guard let location = locations.first else {
return
}
// 2
AppDelegate.geoCoder.reverseGeocodeLocation(location) { placemarks,_ in
if let place = placemarks?.first {
// 3
let description = "Fake visit: \(place)"
//4
let fakeVisit = FakeVisit(
coordinates: location.coordinate,arrivalDate: Date(),departureDate: Date())
self.newVisitReceived(fakeVisit,description: description)
}
}
}
// MY issue is here in the line with the ** before and after it
func newVisitReceived(_ visit: CLVisit,description: String) {
let location = Location(visit: visit,descriptionString: description)
**LocationsStorage.shared.saveLocationOnDisk(location)**
// save location to the disk
// Get location description
let content = UnmutableNotificationContent()
content.title = "New Journal Entry ?"
content.body = location.description
content.sound = .default
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 1,repeats: false)
let request = UNNotificationRequest(identifier: location.dateString,content: content,trigger: trigger)
center.add(request,withCompletionHandler: nil)
}
}
final class FakeVisit: CLVisit {
private let myCoordinates: CLLocationCoordinate2D
private let myArrivalDate: Date
private let myDepartureDate: Date
override var coordinate: CLLocationCoordinate2D {
return myCoordinates
}
override var arrivalDate: Date {
return myArrivalDate
}
override var departureDate: Date {
return myDepartureDate
}
init(coordinates: CLLocationCoordinate2D,arrivalDate: Date,departureDate: Date) {
myCoordinates = coordinates
myArrivalDate = arrivalDate
myDepartureDate = departureDate
super.init()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}