2017-02-10 116 views
0

我想创建一个BLE扫描仪,并按照着手开发iOS应用(SWIFT)在developer.apple.com,初始化有条件的结合必须有可选类型

当会话“创建表视图”,我得到了这里的错误,

BLEMember.swift

import UIKit 

class BLEMember { 
    var rssi: Int 
    var uuid: String 

    init (rssi:Int, uuid:String){ 
     self.rssi = rssi 
     self.uuid = uuid 
    } 
} 

BLEScanTableViewController.swift

... 
    private func loadBLEMembers() { 

    var members = [BLEMember]() 
    guard let member1 = BLEMember(rssi: 65, uuid: "testing ble 1") else { 
     fatalError("Unable to instantiate meal1") 
    } 

    guard let member2 = BLEMember(rssi: 35, uuid: "testing ble 2") else { 
     fatalError("Unable to instantiate meal2") 
    } 

    guard let member3 = BLEMember(rssi: 45, uuid: "testing ble 3") else { 
     fatalError("Unable to instantiate meal2") 
    } 

    members += [member1, member2, member3] 
} 

并发生错误,

initializer for conditional binding must have optional type, not "BLEMember" 

如何解决?谢谢!

回答

3

let member1 = BLEMember(rssi: 65, uuid: "testing ble 1")总是成功。你不需要在这里使用警卫!

private func loadBLEMembers() { 

    var members = [BLEMember]() 
    let member1 = BLEMember(rssi: 65, uuid: "testing ble 1") 

    let member2 = BLEMember(rssi: 35, uuid: "testing ble 2") 

    let member3 = BLEMember(rssi: 45, uuid: "testing ble 3") 

    members += [member1, member2, member3] 

} 
+0

“guard”就像“if”?谢谢! – JimmyHo

+2

readmore about [guard](https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/ControlFlow.html#//apple_ref/doc/uid/TP40014097-CH9-ID120)here! – javimuu

相关问题