ios - 不能下标 NSObject 类型的值
问题描述
这段代码:
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate {
var window: UIWindow?
var locationManager: CLLocationManager?
var significatLocationManager : CLLocationManager?
private func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool {
if(UIApplication.shared.backgroundRefreshStatus == UIBackgroundRefreshStatus.available){
print("Yes")
}else{
print("No")
}
if let launchOpt = launchOptions{
if (launchOpt[UIApplicationLaunchOptionsLocationKey] != nil) {
self.significatLocationManager = CLLocationManager()
self.significatLocationManager?.delegate = self
self.significatLocationManager?.requestAlwaysAuthorization()
if #available(iOS 9.0, *) {
self.significatLocationManager!.allowsBackgroundLocationUpdates = true
}
self.significatLocationManager?.startMonitoringSignificantLocationChanges()
}else{
self.locationManager = CLLocationManager()
self.locationManager?.delegate = self
self.locationManager?.requestAlwaysAuthorization()
if #available(iOS 9.0, *) {
self.locationManager!.allowsBackgroundLocationUpdates = true
}
self.locationManager?.startMonitoringSignificantLocationChanges()
}
}else{
self.locationManager = CLLocationManager()
self.locationManager?.delegate = self
self.locationManager?.requestAlwaysAuthorization()
if #available(iOS 9.0, *) {
self.locationManager!.allowsBackgroundLocationUpdates = true
}
self.locationManager?.startMonitoringSignificantLocationChanges()
}
return true
}
给出这个错误:
无法使用“UIApplication.LaunchOptionsKey”类型的索引为“[NSObject:AnyObject]”类型的值下标
我不知道这是什么意思。有什么帮助吗?
我正在 Xcode 10.2.1 中编译 Swift 4.0。
解决方案
您的问题在于函数签名和以下行
if (launchOpt[UIApplicationLaunchOptionsLocationKey] != nil)
在 didFinishLaunchOptions 中,您将启动选项用作旧方法[NSObject : AnyObject]?
并使用最新方法访问启动选项UIApplicationLaunchOptionsLocationKey
旧方法
private func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject : AnyObject]?) -> Bool
最新方法
private func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool
推荐阅读
- android - 将评分栏传递给对话框
- c++ - 默认使用 C++11?
- angular - Angular 可观察缓存数据
- css - Kendo Angular Grid CSS - 覆盖默认链接样式
- c++ - 关于取消引用运算符是否在表达式中产生对象与值的定义模糊
- java - 如何为提供的 WSDL 编辑 Java 类
- tensorflow - 如何处理 parse_single_example 函数中的 categorical_column。
- laravel - Laravel:仅在 DOM 中可用时验证输入
- python - Keras 预测每次都返回相同的结果
- angular - 预期会出现错误“,”。ngOnInit 中的 ForkJoin 和 combineLatest