我目前正在关注Stanford's Swift course on iTunes U。我尝试按照第10讲的示例进行操作,并且我在下面的代码中的行中收到以下错误:The operand of postfix '?' should have an optional type; type is 'UILabel'
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(Storyboard.CellReuseIdentifier, forIndexPath: indexPath) as UITableViewCell
// Configure the cell...
let tweet = tweets[indexPath.section][indexPath.row]
cell.textLabel?.text = tweet.text // this line throws the error
cell.detailTextLabel?.text = tweet.user.name
return cell
}
但是,如果我删除了?
,那么编译就可以了。这与视频中的示例(使用?
编译)冲突。此外,UITableViewCell的文档显示textLabel
是可选类型。
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(Storyboard.CellReuseIdentifier, forIndexPath: indexPath) as UITableViewCell
// Configure the cell...
let tweet = tweets[indexPath.section][indexPath.row]
cell.textLabel.text = tweet.text // for some reason it wants me to treat the textLabel as a UILabel and not as an optional
cell.detailTextLabel?.text = tweet.user.name
return cell
}
有人可以解释可能导致差异的原因吗?
答案 0 :(得分:0)
通过安装最新版本的Xcode(版本6.2)修复了此问题。