如果#available(iOS 9,*)不工作

时间:2016-01-19 06:42:44

标签: ios swift ios8 swift2 ios9

我在我的代码中发现了一条不喜欢在iOS8上运行的行,但有一种方法可以在iOS8上使用不同的逻辑执行相同的任务,这与iOS9不同。

我使用if #available(iOS 9, *)来执行iOS9上需要的代码和iOS8上的代码。但是,在运行时,在对函数进行几次调用之后,iOS9设备会运行它不应该运行的代码并崩溃。我是否错过了设置if #available(iOS 9, *)

的步骤

代码在

之下
if #available(iOS 9, *) {
    if(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!){
        self.otherChats[loc].append(messageObj)
        self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
    }
} else {
    self.otherChats[loc].append(messageObj)
    self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
}

2 个答案:

答案 0 :(得分:2)

   let systemVersion = UIDevice.currentDevice().systemVersion        
    if((Double)(systemVersion) > 9.0)
    {
        if(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!){
            self.otherChats[loc].append(messageObj)
            self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
        }
    }
    else
    {
        self.otherChats[loc].append(messageObj)
        self.Notfication.postNotificationName(_Chat.Notification.DidGetMessage, object: nil)
    }

答案 1 :(得分:0)

available检查应该有效。由于要处理的代码在两种情况下都相同(除了if),问题很可能是if条件(self.otherChats[loc].last?.timestamp! != messageObj.timestamp!)是true,如果你认为它应该是false

尝试向两个#available块添加日志,并且很可能您会看到,第二个块(iOS 8版)从未在iOS 9设备上执行。