我正在使用iOS SDK
8.1尝试调用requestWhenInUseAuthorization()方法来提示用户授予对我的应用的访问权限。我导入了CoreLocation.framework,并将NSLocationWhenInUseUsageDescription和NSLocationAlwaysUsageDescription键添加到info.plist中。当我运行该应用程序时,它从未提示我访问位置。以下是我的代码,我错过了什么?
import UIKit
import CoreLocation
import MapKit
class ViewController: UIViewController, CLLocationManagerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
var manager = CLLocationManager()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
let authorizationStatus = CLLocationManager.authorizationStatus()
switch authorizationStatus {
case .Authorized:
println("authorized")
case .AuthorizedWhenInUse:
println("authorized when in use")
case .Denied:
println("denied")
case .NotDetermined:
println("not determined")
case .Restricted:
println("restricted")
}
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
func locationManager(manager: CLLocationManager!, didUpdateLocations locations: [AnyObject]!) {
let location = locations[0] as CLLocation
println("Latitude: \(location.coordinate.latitude). Longitude: \(location.coordinate.longitude).")
}
func locationManager(manager: CLLocationManager!, didChangeAuthorizationStatus status: CLAuthorizationStatus) {
switch status {
case .Authorized:
println("authorized")
case .AuthorizedWhenInUse:
println("authorized when in use")
case .Denied:
println("denied")
case .NotDetermined:
println("not determined")
case .Restricted:
println("restricted")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
控制台只显示一次“不确定”,没有其他显示。所以我去了iPhone Simulator
=>设置=>隐私=>位置=>我的应用。它向我显示了3个选项:“从不”,“在使用应用程序时”,“始终”。但是什么也没选择。
问题解决了。我manager
被声明为viewDidLoad()
方法内部的var ,但是它应该是一个类级别的属性。
将manager
声明从中移出后viewDidLoad()
,我的应用程序开始运行。
不确定如何manager.requestWhenInUseAuthorization()
在幕后精确工作,以及为什么在其中精确manager
定义viewDidLoad()
不起作用。希望知道这个细节的人能启发我。
不可能开始这个项目。我收到的是: “干净的溶液”对我没有帮助。/users/admin/library/developer/coresimulator/devices/0b7ee295-6bf3-41b6-aca8-d4771ec65ab3/data/library/caches/com.apple.mobile.installd.staging/
我刚在Ubuntu12.04中设置了Android开发环境。我制作了一个Android2.3.3版的AVD并在上面运行了我的应用程序。但我不能使用我的电脑键盘或键盘右侧给它。这是什么原因呢? 我的ADT版本是20.0。我早些时候在Windows上开发,它运行良好。
问题内容: 我正在研究要与Jenkins 2.0一起使用的Jenkinsfile。无法识别该方法。我缺少一些配置以使其可用吗? 我的Jenkinsfile: 运行时,出现以下错误: among [AWSEBDeployment, archive, bat, build, catchError, checkout, deleteDir, dir, echo, emailext, error, fil
问题内容: 尝试更改表时出现此错误。 这是我成功运行的CREATE TABLE STATEMENT。 然后,我尝试执行此语句,但出现了以上错误。 问题答案: 外键字段和引用的类型和定义必须相同。这意味着您的外键不允许更改字段的类型。 一种解决方案是: 现在您可以更改您的person_id 重新创建外键 编辑: 上面添加了锁,感谢评论 在执行此操作时,您必须禁止写入数据库,否则可能会冒数据完整性问题
我已经实际搜索但没有找到解决方案在任何网站。我试图在MacOS中使用Java3D用Java编写一个程序,我试图在Eclipse中使用Java3D。我正在尝试运行一个简单的HelloUniverse代码,但我得到了以下异常: 我已经在构建路径中添加了j3dcore.jar、vecmath.jar和j3dutils.jar以及一系列其他库,但似乎都不起作用。 有谁能帮助我在Mac中使用eclipse中