Swift tableView.dequeueReusableCell Never Returning Nil
You don't need to check if the cell is nil using this dequeue method, as long as you've register a cell class for reuse, or provided a prototype in Interface Builder.
let cell = tableView.dequeueReusableCellWithIdentifier("CellSubtitle", forIndexPath: indexPath) as! UITableViewCell
If however, you want to continue manually initializing the cells, you can use the following dequeue method instead. (keep in mind, this is the old way)
let cell = tableView.dequeueReusableCellWithIdentifier("CellSubtitle") as? UITableViewCell
Then as far as initializing the detailTextLabel goes, you don't have to. It's built into the cell, and by specifying that the cell's style should be subtitle, that label will be set up for you.
Note that the casts aren't necessary in Swift 2.