¿El lanzamiento de fuerza es realmente malo y siempre debe evitarlo?

Comencé a usar swiftLint y noté que una de las mejores prácticas para Swift es evitar el lanzamiento forzado. Sin embargo, lo usé mucho al manejar tableView, collectionView para celdas:

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellID, forIndexPath: indexPath) as! MyOffersViewCell

Si esta no es la mejor práctica, ¿cuál es la forma correcta de manejar esto? Supongo que puedo usar if let with as ?, pero ¿eso significa que para otra condición tendré que devolver una celda vacía? ¿Es eso aceptable?

if let cell = collectionView.dequeueReusableCellWithReuseIdentifier(cellID, forIndexPath: indexPath) as? MyOffersViewCell {
      // code
} else {
      // code
}

Respuestas a la pregunta(6)

Su respuesta a la pregunta