每次我在新设备上安装我的App时,都会得到一个意外发现的nil,而在第一次启动时就隐式解开了Optional值!
但是随后的发射很好,并且不会崩溃。
这是崩溃的行
let Startlat = String(LocationManager.sharedInstance.location.coordinate.latitude)
我不确定是什么原因导致的,因为它只会在首次启动时发生!
答案 0 :(得分:0)
首次启动涉及异步用户权限,因此location
在通过!
访问时将为空
var location: CLLocation! /// <<<<< ! should be ?
,您需要做
if let loc = LocationManager.sharedInstance.location as? CLLocation {
}
答案 1 :(得分:0)
仅当您访问类的属性或调用该类的方法时,才会初始化单例类实例。最初,location属性将为nil。 因此,创建一个像这样的启动方法并在AppDelegate中调用该方法
也不要在LocationManager类中将location属性声明为显式展开的可选
AppDelegate.swift
li_switch = torch.tensor([True, False, False, True, True])
torch.add(a, li[li_switch]).sum(dim=0)
torch.sub(b, li[~li_switch]).sum(dim=0)
LocationManager.swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
LocationManager.shared.start()
print(LocationManager.shared.location?.coordinate.latitude)//will never crash
return true
}