Ответ 1
На самом деле as?
все в порядке. Проблема заключается в этой строке:
if let id = cell.productId?
Просто удалите знак вопроса в конце этого. Это не имеет никакого смысла.
Думаю, я смотрю на устаревший код:
@IBAction func stockLevelDidChange(sender: AnyObject) {
if var currentCell = sender as? UIView {
while (true) {
currentCell = currentCell.superview!;
if let cell = currentCell as? ProductTableCell {
if let id = cell.productId? {
var newStockLevel:Int?;
if let stepper = sender as? UIStepper {
newStockLevel = Int(stepper.value);
}
else if let textfield = sender as? UITextField {
if let newValue = textfield.text.toInt()? {
newStockLevel = newValue;
}
}
if let level = newStockLevel {
products[id].4 = level;
cell.stockStepper.value = Double(level);
cell.stockField.text = String(level);
}
}
break;
}
}
displayStockTotal();
}
}
Но в первой строке функции я получаю "?"? должен сопровождаться вызовом, поиском члена или индексом "(для вопросительного знака после as
)
Что означает эта ошибка и как этот код изменяется для Swift 1.2?
На самом деле as?
все в порядке. Проблема заключается в этой строке:
if let id = cell.productId?
Просто удалите знак вопроса в конце этого. Это не имеет никакого смысла.
Проблема заключается в if let newValue = textfield.text.toInt()? {
. Если toInt()
возвращает Int?
, то просто избавиться от ?
там.
В 1.2, toInt
исчез. Таким образом,
if let newValue = textfield.text.toInt()?
Должно быть заменено на:
if let newValue:Int? = Int(textField.text!)