外部附件api出现错误,如何使用外部附件

时间:2019-07-05 17:54:11

标签: swift external-accessory

我正在尝试使用外部附件api,编写了一些代码,但出现了大错误。 有人可以告诉我,我的问题在哪里?

这是我写的,也是我得到的错误

也许对我最后一个问题也有帮助

谢谢

var acs = EAAccessory()

override func viewDidLoad() {
    super.viewDidLoad()

    let accessorys = EAAccessoryManager.shared().connectedAccessories.first
    if accessorys != nil{

        acs = accessorys!
            acs.delegate = self
    }
    let session = EASession(accessory: acs, forProtocol: acs.protocolStrings.description)
    if session != nil {
        session?.outputStream?.delegate = self
        session?.outputStream?.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
        session?.outputStream?.open()
        session?.inputStream?.delegate = self
        session?.inputStream?.schedule(in: RunLoop.main, forMode: RunLoopMode.defaultRunLoopMode)
        session?.inputStream?.open()
    }
}

由于未捕获的异常“ EAAccessoryInitException”而终止应用程序,原因:“-init不支持。 EAAccessoryManager负责创建所有对象。 ***首先抛出调用堆栈: (0x1d963b3d 0x1cbeb067 0x1d963a85 0x29bcdf85 0xdfa24 0xdd2b8 0xdee68 0xdf03c 0x230663bb 0x231a06ef 0x231a03a5 0x230660d3 0x231a06ef 0x231a0647 0x231a03a5 0x23065633 0x232f5b1f 0x22e0ce41 0x22c052a1 0x22e0bb11 0x22e1e7c5 0x22e0935b 0x1f244c13 0x1f244acd 0x1f244db7 0x1d91ffdd 0x1d91fb05 0x1d91df51 0x1d8711af 0x1d870fd1 0x22bfee2d 0x22bf9a53 0xe0b18 0x1d05e4eb) libc ++ abi.dylib:以类型为NSException的未捕获异常终止

1 个答案:

答案 0 :(得分:0)

此行无效:

var acs = EAAccessory()

您无法创建“空” EAAccessory。

鉴于您的操作方式,您可能是说:

var acs: EAAccessory!

var acs: EAAccessory?

也就是说,我通常建议将附件处理从视图控制器移到模型层。视图控制器通常应该只专注于协调视图。它们不是用于驱动与硬件的交互。