2016-11-20 21 views
11

Korzystanie iPhone6, Xcode 8.1, systemem iOS 10.1.1, wykonując następujące SWIFT CODE ciśgleNie można pobrać CARRIERNAME

Unable to retrieve CarrierName

Komunikat o błędzie pojawia się przed moimi pierwszymi ViewController nawet obciążeń. Szukałem rozwiązań podobnych (ale nie to samo) problemów z CarrierName. Większość z nich zaleca importowanie CoreTelephony. Dodałem import CoreTelephony, ale nadal otrzymuję ten sam błąd. Poniżej znajduje się fragment kodu, który pokazuje viewDidLoad, a następnie dane wyjściowe konsoli. Wszelki wgląd w ten błąd?

// 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") 

    } 

********************* Console Output *********************** 2016-11-19 22:02:14.442048 MapLocator 3 Match[289:23903] [LogMessageLogging] 6.1 Unable to retrieve CarrierName. CTError: domain-2, code-5, errStr:((os/kern) failure)

Entered viewDidLoad

mapView region set

+0

Gdzie zadeklarowałeś swoją mapęView? Po prostu wpadłem na ten sam problem i popełniłem błąd, ustawiając mapView na właściwość widoku viewControllers i dodając ją jako widok podrzędny. Następnie pojawił się ten komunikat dziennika i aplikacja zamarła. Może jednak nie mieć nic wspólnego z twoim błędem. – mjrehder

+0

Trochę więcej informacji, ale bez rozwiązania https://forums.developer.apple.com/thread/69246 –

+0

Czy masz rozwiązanie tego ...? Mam ten sam problem ..! –

Odpowiedz

0

Taca dodanie CoreTelephony do AppDelegate może być? Implementacja ViewController nie ma dostępu do jakichkolwiek metod ramowych CoreTelephony, więc twój problem leży gdzie indziej.

+0

Dziękuję za odpowiedź. Dobra sugestia, ale wciąż pojawia się błąd. Dziwne jest to, że mogę umieścić kod w mojej funkcji viewDoLoad, aby odczytać nazwę operatora i odczytać poprawnie. Czy to pomoże rozwiązać tę zagadkę? – davidwoj55

+1

Powodzenia? Ja też mam ten problem. –

0

Na moim urządzeniu z systemem iOS dzieje się tak, ponieważ Ustawienia-> Prywatność-> Ustawienia lokalizacji < (nazwa aplikacji) -> Zezwalaj na ustawienia lokalizacji nie jest ustawione na "Nigdy" lub "Podczas korzystania z aplikacji". Po ustawieniu - działa.

+0

to nie zadziałało w moim przypadku :( – AamirR

0

Jako rozwiązanie dla innego problemu zrobiłem co następuje. Niezależnie od tego, czy to naprawi, czy po prostu pominie komunikat, którego nie znam, ponieważ otrzymuję wiadomość, ale nigdy nie zawiesił mojej aplikacji.

W Xcode

  • Kliknij na aktywnej nazwy programu tuż obok przycisku Zatrzymaj
  • kliknij na Edycja schematu ....
  • w Run (Debug) wybrać zakładkę Argumenty
  • w Zmiennych środowiskowych kliknij +
  • dodaj zmienną: OS_ACTIVITY_MODE = wyłącz

kredytu tutaj: https://stackoverflow.com/a/40160779

0

Może to jest trochę głupi, ale sprawdź, czy funkcja map XCode jest aktywna :).

Powiązane problemy