XCode6 beta 6 Swift 编译器错误

Posted

技术标签:

【中文标题】XCode6 beta 6 Swift 编译器错误【英文标题】:XCode6 beta 6 Swift Compiler Error 【发布时间】:2014-08-21 21:58:07 【问题描述】:

我开始观看用户 Brian Advent 的 YouTube Swift 教程,特别是关于使用 Parse https://www.youtube.com/watch?v=__zMnlsfwj4 的远程推送通知的教程。 下载示例应用程序并在 Xcode 6 beta 6 上打开后,编译器在以下代码中显示一个错误:

func application(application: UIApplication!, didReceiveRemoteNotification userInfo:NSDictionary!) 

        var notification:NSDictionary = userInfo.objectForKey("aps") as NSDictionary

        if (notification.objectForKey("content-available") != nil)
            if notification.objectForKey("content-available").isEqualToNumber(1)
                NSNotificationCenter.defaultCenter().postNotificationName("reloadTimeline", object: nil)
            
        else
            PFPush.handlePush(userInfo)
        

错误在 AppDelegate.swift 的下面这一行

if notification.objectForKey("content-available").isEqualToNumber(1)

显示的消息是 'AnyObject?'没有名为“isEqualToNumber”的成员

关于如何解决这个问题的任何提示/帮助?我会很感激的

【问题讨论】:

【参考方案1】:

objectForKey() 返回一个可选 AnyObject?,所以你必须解包 用! 明确表示:

if notification.objectForKey("content-available")!.isEqualToNumber(1)  ...

或者,使用可选赋值。如果与可选演员 (as?) 结合使用,您可以 甚至使用 NSNumber 自动桥接到本机数字类型这一事实:

if let contentAvailable = notification.objectForKey("content-available") as? NSNumber 
    if contentAvailable == 1 
       // ...
    
 else 
    // ...

【讨论】:

你能看看下面我尝试修复上面第一个错误的新错误吗

以上是关于XCode6 beta 6 Swift 编译器错误的主要内容,如果未能解决你的问题,请参考以下文章

XCode6 Beta 中的编译器警告 - “速记外部参数名称”

使用 Xcode6-Beta 运行 Xcode 5.1.1 项目

Xcode6-Beta3 更新后,无法使用 Swift 访问键盘信息

当我在 Xcode 6 beta 中尝试 Swift Playground 时出错

Swift“运算符'>'的模棱两可使用”

安装 XCode 6 beta 4 后无法运行旧的 swift 项目