swift3 - swift 3.0 : Ambiguous reference to member 'Subscript' issue

标签 swift3 xcode8 ios10 swift2

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

// 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

请帮帮我。

最佳答案

“模糊引用”错误告诉您尝试用作下标的变量类型错误。

在本例中,data 是一个需要 NSString 下标的字典。看起来 AEnginePacketDataKey 被定义为 Objective C 代码中指向 NSString 的指针,但您没有显示在何处(如果)为其分配了任何内容。在尝试将其用作 data 的下标之前,请确保为其分配一个实际的 NSString

关于swift3 - swift 3.0 : Ambiguous reference to member 'Subscript' issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40415338/

相关文章:

java - 是否可以在 Xcode 中编辑、编译和运行 Java 代码?

ios - "Expression was too complex to be solved in reasonable time"在 swift 3 中向字典添加数据时,在 swift 2.3 中工作正常

swift - 如何检查 Firebase 中 autoID 子项下保存的值?

animation - 处理 iOS 10 中的 AutoLayout 约束动画差异?

ios - 椰子足 : target has transitive dependencies that include static binaries when installing 'VialerSIPLib'

ios - 在快速滚动 collectionview 时,第一行数据在最后一行重复

swift - ViewController 委托(delegate)未被调用

swift3 - 当我点击 iPhone 的 home 按钮时,ios10 scenekit 会崩溃

swift - 测试类中的 UI 测试功能

ios - 调试通知扩展