Delegate must respond to locationManager:didUpdateLocations swift eroor

匿名 (未验证) 提交于 2019-12-03 01:20:02

问题:

Hy guys, I'm making an app in swift 3.0 but I ran across a problem pretty soon. I set up necessary functions to ask for permission to use a location but every time I run the app I get the same error...

Viewcontroller.h

import UIKit import MapKit  class ViewController: UIViewController {      let locationManager = CLLocationManager()      override func viewDidLoad() {         super.viewDidLoad()         locationManager.delegate = self         locationManager.desiredAccuracy = kCLLocationAccuracyBest         locationManager.requestWhenInUseAuthorization()         locationManager.requestLocation()     }      override func didReceiveMemoryWarning() {         super.didReceiveMemoryWarning()         // Dispose of any resources that can be recreated.     }   }  extension ViewController : CLLocationManagerDelegate {     private func locationManager(manager: CLLocationManager, didChangeAuthorizationStatus status: CLAuthorizationStatus) {         if status == .authorizedWhenInUse {             locationManager.requestLocation()         }     }      private func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {         if locations.first != nil {             print("location:: (location)")         }     }      private func locationManager(manager: CLLocationManager, didFailWithError error: NSError) {         print("error:: (error)")     } } 

Error:

2016-10-31 16:12:11.436192 Assemble[57741:2743477] bundleid: com.AssembleTm.Assemble, enable_level: 0, persist_level: 0, propagate_with_activity: 0 2016-10-31 16:12:11.437006 Assemble[57741:2743477] subsystem: com.apple.siri, category: Intents, enable_level: 1, persist_level: 1, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2016-10-31 16:12:11.524494 Assemble[57741:2743668] subsystem: com.apple.UIKit, category: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2016-10-31 16:12:11.526709 Assemble[57741:2743668] subsystem: com.apple.UIKit, category: HIDEventIncoming, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2016-10-31 16:12:11.561488 Assemble[57741:2743658] subsystem: com.apple.BaseBoard, category: MachPort, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2016-10-31 16:12:11.638717 Assemble[57741:2743477] subsystem: com.apple.UIKit, category: StatusBar, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2016-10-31 16:12:11.744 Assemble[57741:2743477] *** Assertion failure in -[CLLocationManager requestLocation], /BuildRoot/Library/Caches/com.apple.xbs/Sources/CoreLocationFramework_Sim/CoreLocation-2100.0.12/Framework/CoreLocation/CLLocationManager.m:865 2016-10-31 16:12:11.855 Assemble[57741:2743477] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Delegate must respond to locationManager:didUpdateLocations:' *** First throw call stack: (     0   CoreFoundation                      0x000000010a58d34b __exceptionPreprocess + 171     1   libobjc.A.dylib                     0x000000010873b21e objc_exception_throw + 48     2   CoreFoundation                      0x000000010a591442 +[NSException raise:format:arguments:] + 98     3   Foundation                          0x0000000106799edd -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 195     4   CoreLocation                        0x0000000106291523 CLClientGetCapabilities + 13233     5   Assemble                            0x00000001061e1976 _TFC8Assemble14ViewController11viewDidLoadfT_T_ + 294     6   Assemble                            0x00000001061e19e2 _TToFC8Assemble14ViewController11viewDidLoadfT_T_ + 34     7   UIKit                               0x000000010708f06d -[UIViewController loadViewIfRequired] + 1258     8   UIKit                               0x000000010708f4a0 -[UIViewController view] + 27     9   UIKit                               0x0000000106f59045 -[UIWindow addRootViewControllerViewIfPossible] + 71     10  UIKit                               0x0000000106f59796 -[UIWindow _setHidden:forced:] + 293     11  UIKit                               0x0000000106f6d0a9 -[UIWindow makeKeyAndVisible] + 42     12  UIKit                               0x0000000106ee6259 -[UIApplication _callInitializationDelegatesForMainScene:transitionContext:] + 4818     13  UIKit                               0x0000000106eec3b9 -[UIApplication _runWithMainScene:transitionContext:completion:] + 1731     14  UIKit                               0x0000000106ee9539 -[UIApplication workspaceDidEndTransaction:] + 188     15  FrontBoardServices                  0x000000010e1cf76b __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 24     16  FrontBoardServices                  0x000000010e1cf5e4 -[FBSSerialQueue _performNext] + 189     17  FrontBoardServices                  0x000000010e1cf96d -[FBSSerialQueue _performNextFromRunLoopSource] + 45     18  CoreFoundation                      0x000000010a532311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17     19  CoreFoundation                      0x000000010a51759c __CFRunLoopDoSources0 + 556     20  CoreFoundation                      0x000000010a516a86 __CFRunLoopRun + 918     21  CoreFoundation                      0x000000010a516494 CFRunLoopRunSpecific + 420     22  UIKit                               0x0000000106ee7db6 -[UIApplication _run] + 434     23  UIKit                               0x0000000106eedf34 UIApplicationMain + 159     24  Assemble                            0x00000001061e3fcf main + 111     25  libdyld.dylib                       0x000000010af5b68d start + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)  

I'm new to swift 3.0 but I couldn't find anything on how to solve this (I alreaddy looked it up on stackoverflow but the answer they gave didn't help me...)

回答1:

You are using xcode8 and swift3 but your delegate methods are copied from swift 2.Change your delegate methods as below.

extension ViewController : CLLocationManagerDelegate {      func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {          print("error:: \(error.localizedDescription)")     }      func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {         if status == .authorizedWhenInUse {             locationManager.requestLocation()         }     }      func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {          if locations.first != nil {             print("location:: (location)")         }      }  } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!