Не удалось получить имя CarrierName

Использование iPhone6, Xcode 8.1, запуск iOS 10.1.1, выполнение следующих  Быстрый код Я все время получаю

Невозможно получить имя CarrierName

Сообщение об ошибке появляется до того, как мои первые ViewController равногружаются. Я искал решения аналогичных (но не одинаковых) проблем CarrierName. Большинство из них рекомендуют импортировать CoreTelephony. Я добавил импорт CoreTelephony, но я все равно получаю ту же ошибку. Ниже приведен фрагмент кода, который показывает viewDidLoad, за которым следует выход консоли. Любое понимание этой ошибки?

//  ViewController.swift
//  MapLocator

import UIKit
import MapKit
import CoreLocation
import CoreTelephony


class ViewController: UIViewController, UISearchBarDelegate, MKMapViewDelegate,UINavigationControllerDelegate {
    var searchController:UISearchController!
    var annotation:MKAnnotation!
    var localSearchRequest1:MKLocalSearchRequest!
    var localSearchRequest2:MKLocalSearchRequest!
    var localSearch1:MKLocalSearch!
    var localSearch2:MKLocalSearch!
    var localSearchResponse1:MKLocalSearchResponse!
    var localSearchResponse2:MKLocalSearchResponse!
    var error:NSError!
    var pointAnnotation:MKPointAnnotation!
    var pinAnnotationView:MKPinAnnotationView!
    var placeMark1:MKPlacemark!
    var myRoute : MKRoute?
    var coord1 : CLLocationCoordinate2D!
    var coord2 : CLLocationCoordinate2D!
    //    var newPt : MKMapPoint!

    //    var lineArrayPtr = [MKMapPoint]()
    var lineArrayPtr:UnsafeMutablePointer<MKMapPoint>? = nil
    var pointIndex : Int = 0

    var lp1 : MKMapPoint!
    var lp2 : MKMapPoint!
    var lp3 : MKMapPoint!
    var lp4 : MKMapPoint!

    var searchButtonClicked = 0
    var buttonTouchCount : Double = 0
    let tapsPerMeter : Double = 2
    var pointsPerMeter : Double!
    var tapDistance : Double!

    //**************
    override func viewDidLoad() {
        super.viewDidLoad()
        mapView.delegate = self
        print("Entered viewDidLoad")

        let latitude_x: Double = 42.755139
        let longitude_x: Double = -71.584

        // Init the zoom level
        let coordinate:CLLocationCoordinate2D = CLLocationCoordinate2D(latitude: latitude_x, longitude: longitude_x)
        //let span = MKCoordinateSpanMake(100, 80)
        let span = MKCoordinateSpanMake(0.01, 0.01)
        let region = MKCoordinateRegionMake(coordinate, span)
        self.mapView.setRegion(region, animated: true)
        print("mapView region set")

    }

********************* Консольный выход *********************** 2016-11-19 22: 02: 14.442048 MapLocator 3 Match [289: 23903] [LogMessageLogging] 6.1 Невозможно получить имя CarrierName. CTError: домен-2, код-5, errStr: ((os/kern) отказ)

Введенный viewDidLoad

mapView region set

Ответ 1

Лоток, добавляющий CoreTelephony в AppDelegate, может быть? Реализация ViewController не имеет доступа к каким-либо базовым методам CoreTelephony, поэтому ваша проблема лежит в другом месте.

Ответ 2

На моем устройстве iOS это происходит, потому что Настройки- > Конфиденциальность- > Настройки местоположения < (имя приложения) → Разрешить настройки местоположения не установлены ни "Никогда", ни "При использовании приложения". Как только я его установил - он работает.

Ответ 3

В качестве решения другой проблемы я сделал следующее. Является ли это исправление или просто подавляет msg, который я не знаю, поскольку я получал msg, но он никогда не разбивал мое приложение.

В Xcode

  • Нажмите на название активной схемы рядом с кнопкой "Стоп"
  • Нажмите "Изменить схему".
  • в Run (Debug) выберите вкладку "Аргументы"
  • в переменных среды нажмите +
  • добавить переменную: OS_ACTIVITY_MODE = отключить

кредит здесь: fooobar.com/questions/7751/...

Ответ 4

Возможно, это глупо, но проверьте, что XCode Maps активен:).