2015-08-17 3 views
2

Я просто пытаюсь выполнить очень простой вызов API системы, настроив UITableView на .Настройка редактирования UITableView в Swift

Однако я понятия не имею, что компилятор жалуется:

let isEditing = self.tableView?.editing 
self.tableView?.setEditing(!isEditing, animated: true) 

Сообщение об ошибке:

Дополнительный тип «_» не может быть использован как логическое значение; тест для '! = nil' вместо

Благодарен за любой совет!

ответ

2

Вы можете просто разворачивают по желанию и использовать !isEditing!, но я считаю, этот подход будет намного безопаснее:

if let isEditing = self.tableView?.editing { 
    self.tableView?.setEditing(!isEditing, animated: true) 
} 
+0

спасибо! Теперь имеет смысл! – MrBr

0

Ваш isEditing тип переменной Bool необязательный, поэтому отделите true и false, он может также иметь значение nil, и это из-за вопросительного знака, используемого в self.tableView?.editing. Чтобы заставить его работать, вам нужно будет принудительно развернуть его значение, используя ! в self.tableView!.editing или self.tableView?.setEditing(!isEditing!, animated: true).

Имейте в виду, что сила разворачивание может быть вредным и привести к времени выполнения исключения, поэтому постарайтесь избегать его, используя опциональный разворачивания

0

Вопросительный знак рядом с таблицейView означает, что если свойство tableView равно nil, тогда tableView? .editing должен возвращать nil. Это приводит к дополнительному Bool для утверждения let isEditing = self.tableView?.editing

Вы можете это исправить, используя восклицательный знак вместо вопросительного знака (если вы уверены, что 100%, что Tableview существует), или более чистый

if let isEditing = self.tableView?.editing { 
    //If isEditing exists, than self.tableView exists for sure! If it doesn't 
    //the only possible reason is that tableView is nil so there is no point 
    //to try to call setEditing on a nil object. If isEditing is nil, the if 
    //condition will fail and you will not get in this scope. 
    self.tableView!.setEditing(!isEditing, animated: true) 
} 
Смежные вопросы