2016-01-19 3 views
1

Я нашел строку в своем коде, которая не нравится запускаться на iOS8, но имеет способ выполнить одну и ту же задачу на iOS8 с другой логикой, что doesn Мне нравится iOS9.if #доступный (iOS 9, *) Не работает

Я использовал 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) 
} 

ответ

1
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) 
    } 
0

available проверка должна работать. Так как код, подлежащий расширению, равен в обоих случаях (кроме if), проблема, вероятно, заключается в том, что условие if (self.otherChats[loc].last?.timestamp! != messageObj.timestamp!) равно true, когда вы думаете, что это должно быть false.

Попытайтесь добавить журналы на оба блока #available, и, скорее всего, вы увидите, что второй блок (iOS 8 один) никогда не выполняется на устройстве iOS 9.

+0

if '(self.otherChats [loc] .last? .timestamp!! = MessageObj.timestamp!)' Был true или false, он никогда не должен проходить мимо 'else', поскольку' else' связан с 'if #available (iOS 9, *) {' – Mark

+0

@MarkMasterson, это именно то, что я пытаюсь сказать. Вы уверены, что это было в блоке '# available' else? Потому что результат тот же в обоих. Вы поместили там log/brakepoint? Если да, то это, вероятно, ошибка, и лучше сообщить об этом Apple через http://bugreport.apple.com. – FreeNickname

Смежные вопросы