JimmyHo
JimmyHo

Reputation: 289

initializer for conditional binding must have optional type

I want to create a BLE scanner, and follow Start Developing iOS Apps (Swift) at developer.apple.com,

when session "Create a Table View", I got an error here,

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]
}

and error happen,

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

how to fix it? thanks!

Upvotes: 0

Views: 4513

Answers (1)

javimuu
javimuu

Reputation: 1859

let member1 = BLEMember(rssi: 65, uuid: "testing ble 1") always success. You don't need use guard here!

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]

}

Upvotes: 3

Related Questions