Swift: странное поведение в разворачивании
В моей модели Child я объявил следующие свойства:
var name:String?
var year:String?
var make:String?
var model:String?
и init:
init(name:String, ... ,year:String, make:String, model:String, ...){
self.name = name
...
self.year = year
self.make = make
self.model = model
}
Здесь я создаю дочерний элемент:
Child(name:cName,...,year:cYear,make:cMake, model:cModel,...)
В
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell!{
Для дочернего имени я мог бы использовать его напрямую без разворачивания:
cell!.textLabel.text = child.name
Но мне нужно развернуть child.year, child.make, child.model, если я хочу их использовать. Почему это?
cell!.detailTextLabel.text = child.year! + " " + child.make! + " " + child.model!
Я последовал за этим учебником и успешно сработал проект. В этом проекте, в аналогичной ситуации, мне не нужно разворачивать. Код
cell.text = album.title
cell.image = UIImage(named: "Blank52")
cell.detailTextLabel.text = album.price
Ответы
Ответ 1
Вам нужна явная развертка, потому что вы используете оператор конкатенации. Конкатенация не определена для необязательных строк, поэтому вам нужно добавить восклицательный знак, чтобы развернуть значения. Вы можете избежать этого, если используете интерполяцию строк, например:
cell!.detailTextLabel.text = "\(child.year) \(child.make) \(child.model)"
Примечание. Если инициализатор, который вы показываете, является единственным доступным, вы можете сделать свои строки не факультативными.