我在Swift 2.3到Swift 3.0中遇到了一个不寻常的问题。一旦我将代码从2.3转换到3.0,我就遇到了这个问题:“对成员”Subscribe“的引用不明确,
代号为:
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]上获取错误,因为对成员'Subscribe'的引用不明确,我不明白为什么?。其他:
// 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条答案
按热度按时间8wtpewkr1#
“ambiguous reference”错误告诉您试图用作下标的变量的类型错误。
在本例中,
data
是一个字典,它需要一个NSString
下标。看起来AEnginePacketDataKey
在Objective C代码中被定义为一个指向NSString
的指针,但是你没有显示在哪里(如果)给它赋值。在你尝试将它用作data
的下标之前,请确保你给它赋值了一个实际的NSString
。