2016-11-20 54 views
11

使用iPhone6時,Xcode 8.1,運行iOS 9.1.1,執行以下 斯威夫特代碼我不斷收到無法檢索CARRIERNAME

Unable to retrieve 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") 

    } 

********************* 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

你在哪裏聲明瞭你的mapView?我剛剛遇到同樣的問題,並通過將mapView設置爲viewControllers視圖屬性並將其添加爲子視圖而犯了一個錯誤。然後這條日誌消息出現,App凍結。雖然可能與你的錯誤無關。 – mjrehder

+0

多一點的信息,但沒有解決方案https://forums.developer.apple.com/thread/69246 –

+0

你有沒有得到解決這個..?我有同樣的問題..! –

回答

0

托盤添加CoreTelephony到AppDelegate中可能?你的ViewController實現沒有訪問任何CoreTelephony框架方法,因此你的問題在別處。

+0

謝謝你的迴應。好的建議,但仍然得到錯誤。奇怪的是,我可以在我的viewDidLoad函數中添加一些代碼來讀取運營商名稱並正確讀取。這有助於解決這個謎團嗎? – davidwoj55

+1

運氣好嗎?我也有這個問題。 –

0

在我的iOS設備上,這是因爲設置 - >隱私 - >位置設置<(應用程序名稱) - >允許位置設置未設置爲「從不」或「在使用應用程序時」。一旦我設定 - 它的工作。

+0

這在我的情況下不起作用:( – AamirR

0

作爲解決不同問題的解決方案,我做了以下工作。無論是修復它還是僅僅抑制味精,我都不知道,因爲我得到的味精,但它從來沒有崩潰我的應用程序。

在Xcode中

  • 點擊旁邊的編輯計劃的停止按鈕
  • 點擊您的活動方案名稱....
  • 在運行(調試)選擇參數標籤
  • 環境變量中點擊+
  • 添加變量:OS_ACTIVITY_MODE =禁用

這裏的信用:https://stackoverflow.com/a/40160779

0

也許這是一個愚蠢的,但檢查,XCode地圖功能是活動:)。