无法检索运营商名称

11

使用 iPhone6,Xcode 8.1,在运行 iOS 10.1.1 的环境下,执行以下 Swift 代码时,我一直收到以下错误信息:

无法检索 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: domain-2, code-5, errStr:((os/kern) failure)

进入viewDidLoad

设置mapView区域


你在哪里声明了你的mapView?我刚遇到了同样的问题,我犯了一个错误,将mapView设置为viewControllers视图属性并将其添加为子视图。然后出现了这个日志消息,应用程序就卡住了。不过可能与你的错误无关。 - mjrehder
更多的信息,但没有解决方案 https://forums.developer.apple.com/thread/69246 - Alexander Vasenin
你解决了这个问题吗?我也遇到了同样的问题! - Anish Kodeboyina
4个回答

0
作为解决其他问题的方案,我执行了以下操作。无论这是否修复了它或只是抑制了消息,我不知道,因为我一直在收到该消息,但它从未使我的应用程序崩溃。
在Xcode中:
  • 单击“停止”按钮旁边的活动方案名称
  • 单击“编辑方案...”
  • 在“运行(调试)”中选择“参数”选项卡
  • 在“环境变量”中单击+号
  • 添加变量:OS_ACTIVITY_MODE = disable
来源:https://dev59.com/fFkT5IYBdhLWcg3wh__s#40160779

0
在我的iOS设备上,这是因为设置->隐私->位置设置<(应用程序名称)->允许位置设置没有设置为“从不”或“仅在使用应用程序时”。一旦我设置好了它 - 它就可以工作了。

0
在AppDelegate里面添加CoreTelephony可能吗?你的ViewController实现没有使用到任何CoreTelephony框架方法,所以你的问题应该出在其他地方。

谢谢您的回复。好建议,但仍然出现错误。奇怪的是,我可以在我的viewDidLoad函数中放置一些代码来读取运营商名称,并且它可以正确地读取。这有助于解决这个谜团吗? - davidwoj55
1
有什么进展吗?我也遇到了这个问题。 - Noah G.

0
也许这有点傻,但请检查 XCode 地图功能是否已激活 :) 。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接