Я довольно новичок в понимании использования CoreLocation и Parse, поэтому, пожалуйста, несите меня! Я код с быстрым и много сообщений SO, которые я искал, были в Obc-C, с которыми я очень незнакома.Parse and Swift - PFGeoPoint с CLLocationManager?
............................................. ....................ОБНОВИТЬ............................. .......................................... Попытка хранения текущего местоположения пользователей в базу данных Parse, но она не работает. Я получаю ошибку:
[Ошибка]: недопустимый сессия лексем (Код: 209, Версия: 1.9.1) Необязательные (Ошибка Доменные = kCLErrorDomain Code = 0 "(нуль)")»
Любые предложения/помочь мне точку в правильном направлении?
import UIKit
import Parse
import CoreLocation
class ViewController: UIViewController, CLLocationManagerDelegate {
var manager: CLLocationManager!
var activityIndicator:UIActivityIndicatorView = UIActivityIndicatorView()
@IBOutlet weak var username: UITextField!
@IBOutlet weak var password: UITextField!
@IBAction func signUp(sender: AnyObject) {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
let user = PFUser()
user.username = username.text
user.password = password.text
user.signUpInBackgroundWithBlock { (success, error) -> Void in
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
if error == nil {
PFGeoPoint.geoPointForCurrentLocationInBackground { (geoPoint: PFGeoPoint?, error: NSError?) -> Void in
if error == nil {
print("got location successfully")
PFUser.currentUser()!.setValue(geoPoint, forKey:"location")
PFUser.currentUser()!.saveInBackground()
} else {
print(error)
}
}
self.performSegueWithIdentifier("login", sender: self)
} else {
print(error)
}
}
}
@IBAction func login(sender: AnyObject) {
activityIndicator = UIActivityIndicatorView(frame: CGRectMake(0, 0, 50, 50))
activityIndicator.center = self.view.center
activityIndicator.hidesWhenStopped = true
activityIndicator.activityIndicatorViewStyle = UIActivityIndicatorViewStyle.Gray
view.addSubview(activityIndicator)
activityIndicator.startAnimating()
UIApplication.sharedApplication().beginIgnoringInteractionEvents()
PFUser.logInWithUsernameInBackground(username.text!, password: password.text!) { (success, error) -> Void in
if error == nil {
self.activityIndicator.stopAnimating()
UIApplication.sharedApplication().endIgnoringInteractionEvents()
self.performSegueWithIdentifier("login", sender: self)
} else {
print(error)
}
}
}
override func viewDidLoad() {
super.viewDidLoad()
manager = CLLocationManager()
manager.delegate = self
manager.desiredAccuracy = kCLLocationAccuracyBest
manager.requestWhenInUseAuthorization()
manager.startUpdatingLocation()
}
Russell, большое спасибо за ваш ответ. У меня есть вопрос для вас, и я бы хотел получить ваши отзывы. Вы упомянули, что я должен хранить местоположение пользователей в классе User ... в моем приложении, я создал свой пользовательский класс во время фазы регистрации. Не могли бы вы посоветовать не хранить местоположение пользователей при регистрации? Или было бы более целесообразно ОБНОВИТЬ местоположение пользователей, когда пользователь просматривает «Подачу» и/или публикует изображение? – Matty
Рад помочь! Я бы рекомендовал хранить/обновлять местоположение пользователя при каждом открытии приложения. Вы можете сделать все это в фоновом режиме, чтобы он никогда не мешал пользовательскому интерфейсу или ограничивался конкретными видами. – Russell
Russell - Я создал новое приложение «dummy», чтобы практиковать шаги, которые вы предложили, но я попадаю в этот вспомогательный метод и сохраняю местоположение пользователей с помощью объекта PFUser. Не возражаете ли вы взглянуть на мой обновленный вопрос и соответствующий код? Еще раз, я ценю помощь! – Matty