現在、xcode8.1 swift3.0.1を使用しているプログラミング初心者です。
逆引きswiftのcoreBluetooth 操作アプリのサンプルコードを入力しました。
http://docs.fabo.io/swift/corebluetooth/006_corebluetooth.html
コンパイル出来たのですが、実機の検索ボタンを押しても検出されません。
デバックエリアには以下のような表記がなされます。
[CoreBluetooth] XPC connection invalid
state CBManagerState
Bluetoothの電源はOn
原因が全くわからないのですが、何か分かる方いらっしゃいますでしょうか?

import UIKit
import CoreBluetooth

class ViewController: UIViewController, UITableViewDelegate,   UITableViewDataSource, CBCentralManagerDelegate, CBPeripheralDelegate{

var myTableView: UITableView!
var myUuids: [String] = []
var myNames: [String] = []
var myPeripheral: [CBPeripheral] = []
var myCentralManager: CBCentralManager!
var myTargetPeripheral: CBPeripheral!
let myButton: UIButton = UIButton()

let dataSets = NSMutableArray()

override func viewDidLoad() {
    super.viewDidLoad()

    // Status Barの高さを取得.
    let barHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height

    // Viewの高さと幅を取得.
    let displayWidth = self.view.frame.width
    let displayHeight = self.view.frame.height

    // TableViewの生成( status barの高さ分ずらして表示 ).
    myTableView = UITableView(frame: CGRect(x: 0, y: barHeight, width: displayWidth, height: displayHeight - barHeight))

    // Cellの登録.
    myTableView.register(UITableViewCell.self, forCellReuseIdentifier: "MyCell")

    // DataSourceの設定.
    myTableView.dataSource = self

    // Delegateを設定.
    myTableView.delegate = self

    // Viewに追加する.
    self.view.addSubview(myTableView)

    // サイズ
    myButton.frame = CGRect(x:0,y:0,width:200,height:40)
    myButton.backgroundColor = UIColor.red;
    myButton.layer.masksToBounds = true
    myButton.setTitle("検索", for: UIControlState.normal)
    myButton.setTitleColor(UIColor.white, for: UIControlState.normal)
    myButton.layer.cornerRadius = 20.0
    myButton.layer.position = CGPoint(x: self.view.frame.width/2, y:self.view.frame.height-50)
    myButton.tag = 1
    myButton.addTarget(self, action: #selector(ViewController.onClickMyButton
        ), for: .touchUpInside)

    // UIボタンをViewに追加.
    self.view.addSubview(myButton);
}

/*
 ボタンイベント.
 */
func onClickMyButton(sender: UIButton){

    // 配列をリセット.

    myUuids = []
    myNames = []
    myPeripheral = []

    // CoreBluetoothを初期化および始動.

    myCentralManager = CBCentralManager(delegate: self, queue: nil)
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
}

// MARK: - CBCentralManagerDelegate

func centralManagerDidUpdateState(_ central: CBCentralManager) {
    print("state \(central.state)");
    switch (central.state) {
    case .poweredOff:
        print("Bluetoothの電源がOff")
    case .poweredOn:
        print("Bluetoothの電源はOn")
        // BLEデバイスの検出を開始.
        myCentralManager.scanForPeripherals(withServices: nil, options:nil)
    case .resetting:
        print("レスティング状態")
    case .unauthorized:
        print("非認証状態")
    case .unknown:
        print("不明")
    case .unsupported:
        print("非対応")
    }
}

/*
 BLEデバイスが検出された際に呼び出される.
 */
func centralManager(central: CBCentralManager,
                    didDiscoverPeripheral peripheral: CBPeripheral,
                    advertisementData: [String : AnyObject],
                    RSSI: NSNumber!)
{
    print("pheripheral.name: \(peripheral.name)")
    print("advertisementData:\(advertisementData)")
    print("RSSI: \(RSSI)")
    print("peripheral.identifier.UUIDString: \(peripheral.identifier.uuidString)")

    let kCBAdvDataLocalName = advertisementData["kCBAdvDataLocalName"] as? String
    if let name = kCBAdvDataLocalName {
        myNames.append(name)
    } else {
        myNames.append("no name")
    }

    myPeripheral.append(peripheral)
    myUuids.append(peripheral.identifier.uuidString)

    myTableView.reloadData()
}

/*
 Cellが選択された際に呼び出される.
 */
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) {
    print("Num: \(indexPath.row)")
    print("Uuid: \(myUuids[indexPath.row])")
    print("Name: \(myNames[indexPath.row])")

    self.myTargetPeripheral = myPeripheral[indexPath.row]
    myCentralManager.connect(self.myTargetPeripheral, options: nil)
}

/*
 Cellの総数を返す.
 */
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return myUuids.count
}

/*
 Cellに値を設定する.
 */
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier:"MyCell" )

    // Cellに値を設定.
    cell.textLabel!.sizeToFit()
    cell.textLabel!.textColor = UIColor.red
    cell.textLabel!.text = "\(myNames[indexPath.row])"
    cell.textLabel!.font = UIFont.systemFont(ofSize: 20)
    // Cellに値を設定(下).
    cell.detailTextLabel!.text = "\(myUuids[indexPath.row])"
    cell.detailTextLabel!.font = UIFont.systemFont(ofSize: 12)
    return cell
}

/*
 Peripheralに接続
 */
func centralManager(central: CBCentralManager, didConnectPeripheral peripheral: CBPeripheral) {
    print("connect")

    // 遷移するViewを定義する.
    let mySecondViewController: SecondViewController = SecondViewController()

    print("setPeripheral")
    mySecondViewController.setPeripheral(target: peripheral)
    mySecondViewController.setCentralManager(manager: central)
    mySecondViewController.searchService()

    // アニメーションを設定する.
    mySecondViewController.modalTransitionStyle = UIModalTransitionStyle.partialCurl

    print(self.navigationController)
    // Viewの移動する.
    self.navigationController?.pushViewController(mySecondViewController, animated: true)
}

/*
 Peripheralに接続失敗した際
 */
func centralManager(central: CBCentralManager, didFailToConnectPeripheral peripheral: CBPeripheral, error: NSError?) {
    if let e = error {
        print("Error: \(e.localizedDescription)")
        return
    }
    print("not connnect")
}    

}