Подтвердить что ты не робот

Быстро? должен сопровождаться вызовом, поиском члена или индексом

Думаю, я смотрю на устаревший код:

@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?

4b9b3361

Ответ 1

На самом деле as? все в порядке. Проблема заключается в этой строке:

if let id = cell.productId?

Просто удалите знак вопроса в конце этого. Это не имеет никакого смысла.

Ответ 2

Проблема заключается в if let newValue = textfield.text.toInt()? {. Если toInt() возвращает Int?, то просто избавиться от ? там.

Ответ 3

В 1.2, toInt исчез. Таким образом,

if let newValue = textfield.text.toInt()?

Должно быть заменено на:

if let newValue:Int? = Int(textField.text!)