首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >委托必须响应locationManager:didUpdateLocations

委托必须响应locationManager:didUpdateLocations
EN

Stack Overflow用户
提问于 2016-10-31 15:19:46
回答 6查看 17.8K关注 0票数 12

伙计们,我正在制作一个应用程序,用的是快速3.0,但我很快就遇到了一个问题。我设置了必要的函数来请求使用某个位置的许可,但是每次运行应用程序时,我都会得到相同的错误.

Viewcontroller.h

代码语言:javascript
运行
复制
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)")
    }
}

错误:

代码语言:javascript
运行
复制
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) 

我刚接触到斯威夫特3.0,但在如何解决这个问题上找不到任何东西(我已经在堆栈溢出上查过了,但他们给出的答案对我没有帮助……)

EN

Stack Overflow用户

发布于 2019-03-27 14:54:20

如果您向位置管理器请求位置,并且它的委托为零,则有可能得到此错误。确保始终在调用任何位置请求之前设置委托。

例如,首先设置委托:

代码语言:javascript
运行
复制
locationManager.delegate = self

在请求地址之前:

代码语言:javascript
运行
复制
locationManager.requestLocation()
票数 18
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40345170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档