Swift 3.0:对成员'下标'问题的模糊引用

时间:2016-11-04 04:34:01

标签: swift3 xcode8 ios10 swift2.3

我在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 
            }
        }
    } 

获取错误让包=数据[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

请帮帮我。

1 个答案:

答案 0 :(得分:2)

&#34;含糊不清的参考&#34;错误告诉您,您尝试用作下标的变量是错误的类型。

在这种情况下,data是一个期待NSString下标的字典。看起来AEnginePacketDataKey被定义为指向目标C代码中NSString的指针,但您不会显示分配给它的任何内容(如果)。在尝试将其用作NSString的下标之前,请确保为其指定实际data