2

我在 Swift 2.3 到 Swift 3.0 中遇到了一个不寻常的问题。一旦我将代码从 2.3 转换为 3.0,我就会遇到这个问题:'Ambiguous reference to member 'Subscript',

代码是:

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] 作为对成员“下标”的模糊引用时出现错误,我不明白为什么?其他:

// 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,是一个需要NSString下标的字典。它看起来像是在您的 Objective C 代码AEnginePacketDataKey中定义为指向 an 的指针NSString,但是您没有显示在哪里(如果)分配了任何东西。在尝试将NSString其用作data.

于 2016-11-04T05:22:30.180 回答