Could not inset legal attribution from corner 4 swift

匿名 (未验证) 提交于 2019-12-03 03:05:02

问题:

I am new to Xcode and mobile app. I am doing an app to find the current location. I tested it on the simulator and got this message in the console. "Could not inset legal attribution from corner 4". What does it mean and how can I fix it?

import UIKit import Alamofire import AlamofireImage import MapKit import CoreLocation  class MapVC: UIViewController  @IBOutlet weak var mapView: MKMapView!  var locationManager = CLLocationManager() let authorizationStatus = CLLocationManager.authorizationStatus() let regionRadius: Double = 1000  override func viewDidLoad() {     super.viewDidLoad()      mapView.delegate = self     locationManager.delegate = self     configureLocationServices() }  override func didReceiveMemoryWarning() {     super.didReceiveMemoryWarning()     // Dispose of any resources that can be recreated. }  @IBAction func centerMapPressed(_ sender: Any) {     if authorizationStatus == .authorizedAlways || authorizationStatus == .authorizedWhenInUse{         centerMapOnUserLocation()     } } 

MKMapViewDelegate:

func centerMapOnUserLocation(){ guard let coordinate = locationManager.location?.coordinate else{return} let coordinateRegion = MKCoordinateRegionMakeWithDistance(coordinate, regionRadius*2.0, regionRadius * 2.0 ) mapView.setRegion(coordinateRegion, animated: true)  } 

CLLocationManagerDelegate:

func configureLocationServices(){     if authorizationStatus == .notDetermined{         locationManager.requestAlwaysAuthorization()     }else{         return} } func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {      centerMapOnUserLocation() } 

回答1:

this issue occurs when the required information in the right form is not found. if your device i trying to get some location or some number a variable, and that a variable is required for afun.. the value is not set into a, but afun is called that this error occurs..

call your cell's coordinates in viewdidload without any other function.

Here is the simplest way to get your cell's position. 1. you should have updated privacies of the devices under infor.plist

Add following lines into your plist before closing tag

    <key>NSLocationAlwaysAndWhenInUseUsageDescription</key>     <string>Privacy - Location Always and When In Use Usage Description</string>     <key>NSLocationAlwaysUsageDescription</key>     <string>Privacy - Location Always Usage Description</string>     <key>NSLocationWhenInUseUsageDescription</key>     <string>Privacy - Location When In Use Usage Description</string> 

after that.. this is the simplest working code .. i'm happily using it with no issue..

import CoreLocation import MapKit  class AddressVc: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {      @IBOutlet weak var map: MKMapView!     var locationManager = CLLocationManager() 

here is code to move map in center for the required location

    let latDelta:Double = 0.5     let lngDelta:Double = 0.5      let latitude:Double = 37.57554038     let longitude:Double = -122.40068475      let locationcoordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)     let zoomSpan = MKCoordinateSpan(latitudeDelta: latDelta, longitudeDelta: lngDelta)     let region = MKCoordinateRegion(center: locationcoordinates, span: zoomSpan)     self.map.setRegion(region, animated: true)  

in the above code.. if you put device's lat and lng postions in latitude and lognitude that will move the map to your's devices's location.

now how to get device's location. here is the code you can put into your viewDidLoad() function.

override func viewDidLoad() {     super.viewDidLoad()       locationManager.delegate = self     locationManager.desiredAccuracy = kCLLocationAccuracyBest     locationManager.requestWhenInUseAuthorization()     locationManager.startUpdatingLocation()      // device latitude = (locationManager.location?.coordinate.latitude)!     // device longitude = (locationManager.location?.coordinate.longitude)! } 

this is detect the device's latitude and longitude values. you can put them in above mentioned code..

Here is the full code.


import CoreLocation import MapKit  class AddressVc: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {      @IBOutlet weak var map: MKMapView!     var locationManager = CLLocationManager()   override func viewDidLoad() {     super.viewDidLoad()       locationManager.delegate = self     locationManager.desiredAccuracy = kCLLocationAccuracyBest     locationManager.requestWhenInUseAuthorization()     locationManager.startUpdatingLocation()      devicelatitude = (locationManager.location?.coordinate.latitude)!     devicelongitude = (locationManager.location?.coordinate.longitude)!        let latDelta:Double = 0.5     let lngDelta:Double = 0.5      let latitude:Double = devicelatitude     let longitude:Double = devicelongitude      let locationcoordinates = CLLocationCoordinate2D(latitude: latitude, longitude: longitude)     let zoomSpan = MKCoordinateSpan(latitudeDelta: latDelta, longitudeDelta: lngDelta)     let region = MKCoordinateRegion(center: locationcoordinates, span: zoomSpan)     self.map.setRegion(region, animated: true)   } 

I hope this will help you.. if not.. there would be many other who are facing this issue.

==========================



回答2:

With the simulator open, go to the DEBUG menu on the mac top bar, the last option is location, mine was showing this error when set to NONE. Set it Custom Location, first with you prompt you to a custom location on a new window, fill that, close the simulator, and relaunch the app. It should get the custom location from your code now. (andrecasarini credit)



回答3:

You have not typed in an opening curly bracket for your MapVC Class:

your code:

class MapVC: UIViewController 

to fix:

class MapVC: UIViewController { 


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!