ios - 类型 MCSessionState 不符合协议(protocol) 'AnyObject'

标签 ios swift

我在使用以下代码时遇到此错误:

var dict: Dictionary<String, AnyObject> = [
    "peerID": peerID,
    "state": state
]

我正在使用 MultipeerConnectivity:peerID 是 MCPeerID 类型(例如,MCPeerID(displayName: "morpheus")),状态是 MCSessionState(一个枚举,例如, MCSessionState.Connected).显然,我不能将枚举转换为 AnyObject?我该如何解决这个问题?

最好的。

编辑:我尝试使用 Dictionary,但现在我在下一次调用中遇到异常。这是代码:

func session(session: MCSession!, peer peerID: MCPeerID!, didChangeState state: MCSessionState) {

    var dict: Dictionary<String, Any> = [
        "peerID": peerID,
        "state": state
    ]

    NSNotificationCenter.defaultCenter().postNotificationName(
        "MCDidChangeStateNotification",
        object: nil,
        userInfo: dict
    )
}

Xcode 指示“userInfo: dict”行,但有以下异常:

Thread 10: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)

也许这不会告诉您太多信息,那么我可以发布哪些有用的信息呢?

编辑:

通过在运行时(崩溃后)检查对象,这是我得到的:

state   MultipeerConnectivity.MCSessionState    Connecting  Connecting
dict    Swift.Dictionary<Swift.String, protocol<>>      
    [0] Swift._DictionaryElement<Swift.String, protocol<>>      
         key    Swift.String    "state" 
             core   Swift._StringCore       
         value  protocol<>      
             payload_data_0 Builtin.RawPointer  0x0 
             payload_data_1 Builtin.RawPointer  0x0 
             payload_data_2 Builtin.RawPointer  0x0 
             instance_type  Builtin.RawPointer  0x0 

那里似乎有一些空指针,但“state”变量似乎没问题......

注意:我注释掉了 peerID 分配。

最佳答案

AnyObject 仅适用于类类型,使用 Any 也支持枚举(参见 docs )。

关于ios - 类型 MCSessionState 不符合协议(protocol) 'AnyObject',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24109982/

相关文章:

ios - 通过代码从一个 ViewController 切换到另一个

swift - 'fileprivate' 关键字在 Swift 中意味着什么?

iOS 10.3.3 导航栏不显示所有按钮

ios - 如何锁定 UITextView 中的插入符 y 位置以创建打字机效果?

ios - UIImage 之间的立方体过渡

ios - 同时写入和读取核心数据导致 UI 卡住,直到写入完成

ios - 添加联系人时重新加载 TableView swift

ios - Delphi XE4 FireMonkey TMemo 透明吗? (iOS)

ios - 定位服务的 Objective-C 问题

json - 带有证书的快速 REST 请求返回错误(代码 -999)