簡體   English   中英

類型MCSessionState不符合協議“ AnyObject”

[英]Type MCSessionState does not conform to protocol 'AnyObject'

我通過以下代碼收到此錯誤:

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

我正在使用MultipeerConnectivity :peerID的類型為MCPeerID(例如, MCPeerID(displayName: "morpheus") ),狀態為MCSessionState(一個枚舉,例如, MCSessionState.Connected )。 顯然,我不能將枚舉轉換為AnyObject嗎? 我該如何解決?

最好。

編輯:我嘗試使用Dictionary <String,Any>,但是現在在下一個調用中出現異常。 這是代碼:

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 )。

顯然,我不能將枚舉轉換為AnyObject嗎? 我該如何解決?

沒錯,AnyObject不能包含枚舉。

我嘗試使用Dictionary<String, Any> ,但是現在在下一個調用中出現異常。

NSNotificationCentre不需要快速的Dictionary ,它需要一個NSDictionary

DictionaryNSDictionary在任何可能的地方都可以互操作,但是NSDictionary只能將對象作為鍵和值。 您不能在字典中使用Any需要被obj-c API(例如NSNotificationCentre視為NSDictionary

因此,長話短說,通知用戶信息字典必須是Dictionary<AnyObject, AnyObject> (或<String, String>或作為對象的東西)。 您將不得不使用除Enum之外的其他東西。

我認為您需要對字典值使用Any類型(因為AnyObject只能用於類的實例):

這為我在操場上工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM