为啥对成员“下标”的引用模棱两可?

Posted

技术标签:

【中文标题】为啥对成员“下标”的引用模棱两可?【英文标题】:Why ambiguous reference to member 'Subscript'?为什么对成员“下标”的引用模棱两可? 【发布时间】:2016-12-26 09:43:10 【问题描述】:

这是我的 Swift 3 代码:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
    if let userInfo : Foundation.NSDictionary = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? Foundation.NSDictionary 
        self.setNavigationInfoFromPushNotification(userInfo: userInfo)
        navigateFromPushNotification()
    
    ...

它会导致编译时错误:

对成员“下标”的模糊引用

谁能帮我解决这个问题?

【问题讨论】:

是的,此代码仅在 didFinishLaunchingWithOptions 中。 能否请您附上didFinishLaunchingWithOptions 的当前方法签名? @Rob 或者它可能是这样的:***.com/questions/40209234/… launchOptions 似乎是 Any? 并且必须转换为字典。并且在 Swift 中不要注释编译器可以推断的类型并且不要使用NSDictionary,除非你别无选择(在这里你有)。 @Keiwan - 是的,你是对的。这原来是 ***.com/questions/40209234/… 的副本。 【参考方案1】:

方法签名已更改。见How to handle launch options in Swift 3 when a notification is tapped? Getting syntax problems。

现在是:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey : Any]? = nil) -> Bool  
    if let userInfo = launchOptions?[.remoteNotification] as? NSDictionary 
        setNavigationInfoFromPushNotification(userInfo: userInfo)
        navigateFromPushNotification()
    
    ...

【讨论】:

以上是关于为啥对成员“下标”的引用模棱两可?的主要内容,如果未能解决你的问题,请参考以下文章

Xcode 8 中对成员“下标”的模糊引用

对成员“下标”Swift 3 的模糊引用

使用 Array 而不是 NSArray 时出现错误“对成员下标的模糊引用”

在 Swift 中出现错误对成员“下标”的模糊引用

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

Swift 3.0:推送通知中对成员“下标”问题的模糊引用