我正在尝试将ObjC中的旧应用程序转换为Swift作为练习,并且遇到了一些问题。我在旧应用程序中使用它的方式是建立CLLocation
Manager,然后使用:
manager = [[CLLocationManager alloc]init];
manager.delegate = self;
manager.desiredAccuracy = kCLLocationAccuracyBest;
[manager startUpdatingLocation]
它会自动调用:
-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation{
}
从那里我可以提取我需要的所有信息。但是,此方法没有自动完成功能,因此我无法弄清楚如何重现它。该文件说
startUpdatingLocation()
仍将由代理调用,但没有发生。
这是我到目前为止的内容:
import UIKit
import corelocation
class ViewController: UIViewController,CLLocationManagerDelegate{
@IBOutlet var gpsResult : UILabel
var manager:CLLocationManager!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
manager = CLLocationManager()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.startUpdatingLocation()
}
func locationManager(manager:CLLocationManager, didUpdateLocations locations:AnyObject[]) {
println("locations = \(locations)")
gpsResult.text = "success"
}
}
任何帮助或指针在哪里都将不胜感激。谢谢。
编辑:从建议更新,但仍然无法正常工作
EDIT2:似乎是一些错误,导致该方法无法在ViewController中正常工作
您缺少两件事。首先,您必须使用requestAlwaysAuthorization
或寻求许可requestWhenInUseAuthorization()
。所以你viewDidLoad()
应该是这样的:
var locationManager = CLLocationManager()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.requestAlwaysAuthorization()
locationManager.startUpdatingLocation()
}
其次,Info.plist
按照此处的指示编辑您的。
问题内容: 我想使用Swift获取位置的当前经度和纬度,并通过标签显示它们。我尝试执行此操作,但标签上没有任何显示。 问题答案: 恕我直言,当您寻找的解决方案非常简单时,您就使代码复杂化了。 我已经通过使用以下代码来做到这一点: 首先创建和请求授权的实例 然后检查用户是否允许授权。 用它来做到这一点 您将它们设置为的想法是正确的,但是我能想到的唯一原因是用户未给予您许可,这就是为什么您当前的位置数
我有一个IOS 8-only应用程序,我想在其中使用位置服务获取设备的纬度和经度。我认为我已经正确地实现了所有功能,但应用程序从未询问用户是否可以使用位置服务,CLAuthorizationStatus从未从kCLAuthorizationStatusNotDetermined和CLLocationManager委托方法更改 从未接到过电话。 下面是在视图控制器的接口文件中定义的CLLocatio
问题内容: 首先,我很清楚Xcode 6和Swift语言是Beta版本,容易出错。但是,这一特定功能似乎有些奇怪,因为到目前为止我尝试过的所有其他功能似乎都可以正常工作。 如果这不适合StackOverflow,我将很乐意删除该问题。 我已经开始使用Xcode 6 / Swift(为发布做准备),与我想的相比,这是一种非常愉快的体验。话虽如此,在移植我喜欢做的“训练”风格的应用程序时,一个问题是由
问题内容: 我一直在尝试以及如何使用它的光标位置。 但是由于我正在使用Swift,所以我想学习如何获取当前光标位置以及如何在Swift中进行设置。 下面的答案是我从Objective-C进行实验和翻译的结果。 问题答案: 以下内容适用于和。 文本字段文本的最开始: 文本字段文本的末尾: 当前选择的范围: 获取光标位置 设定光标位置 为了设置位置,所有这些方法实际上都是使用相同的开始值和结束值来设置
目前,正在开发一个应用程序,该应用程序需要从CLLocationManager获取最后一个位置(无任何常规跟踪)。不管它有多老,它都是准确的。我不需要也不想开始跟踪——我只需要从缓存中抓取最后一个位置,就这样。在iOS中,CLLocationManager是一个共享组件,如果某个应用程序使用位置跟踪,那么另一个应用程序应该能够使用CLLocationManager中的最新位置。地方只需alloc/
我意识到这个问题以前被问过很多次,但我现在问这个问题是因为答案很旧(与新的API相比)。 我以前使用过Location Manager,但我发现它非常不可靠。例如,在我的应用程序中,使用getLastKnownLocation和/或current location,它会立即将相机加载到用户的当前位置。但是,如果我在启动应用程序之前打开设备上的位置,它就不会把摄像头放在用户的当前位置,而是放在Nig