2

Swift 2.3 から Swift 3.0 で異常な問題が発生しました。コードを 2.3 から 3.0 に変換すると、次の問題が発生します。

コードは次のとおりです。

dynamic func onDataNotification(notification: NSNotification) {
        var data = notification.userInfo as! Dictionary<NSString, ARoutedMessage>
        if let packet = data[AEnginePacketDataKey] as? AEngineMessage,
        currentDevice = self.currentDevice() {
            if packet.messageId == MessageId.message && currentDevice.isDevice() {
// Some code 
            }
        }
    } 

let packet = data[AEnginePacketDataKey] でエラーが発生しましたメンバー 'Subscript' へのあいまいな参照です。理由がわかりません。他の:

// String 
extern NSString *AEnginePacketDataKey;

//ARoutedMessage Class
@interface ARoutedMessage : NSObject
@property NSMutableArray *payloadParameters;
@end

//AEngineMessage Class
@interface AEngineMessage : ARoutedMessage
@property (readonly)MessageId messageId;
- (id) initWithMessageId:(MessageId) mId;
@end

私を助けてください。

4

1 に答える 1

2

「あいまいな参照」エラーは、添字として使用しようとしている変数の型が間違っていることを示しています。

この場合、添え字dataを期待する辞書です。Objective C コードでへのポインタとして定義されているNSStringように見えますが、何かが割り当てられている場所 (場合) は示されていません。の添え字として使用する前に、必ず実際の値を割り当ててください。AEnginePacketDataKeyNSStringNSStringdata

于 2016-11-04T05:22:30.180 に答える