我在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
请帮帮我。
答案 0 :(得分:2)
&#34;含糊不清的参考&#34;错误告诉您,您尝试用作下标的变量是错误的类型。
在这种情况下,data
是一个期待NSString
下标的字典。看起来AEnginePacketDataKey
被定义为指向目标C代码中NSString
的指针,但您不会显示分配给它的任何内容(如果)。在尝试将其用作NSString
的下标之前,请确保为其指定实际data
。