1

我开始观看用户 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”的成员

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

4

1 回答 1

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 {
    // ...
}
于 2014-08-21T23:02:54.443 回答