Swift4: Принудительное приведение из «Данных?» в «Данные» разворачивает только необязательные параметры; Вы хотели использовать '!'?

при последнем обновлении Swift 4 я всегда получаю одну и ту же ошибку в одном и том же месте, и я не знаю, как ее очистить...

если пытался использовать ! вместо ? но ошибка продолжает идти в противоположном направлении.

Ошибка есть с обеими датами? и данные?

это код:

let done = UITableViewRowAction(style: .normal, title: doneTitle) { action, index in
        tableView.beginUpdates() // Beginne mit dem Update


        // error in the following line
        self.appDelegate.loanResource.editLoan(withObjID: (loan?.objectID)!, andName: (loan?.name)!, andAmount: (loan?.amount)!, andNote: (loan?.note)!, andCreated: loan?.created as! Date, andDue: (loan?.due) as! Date, andDone: nowDone, andImage: loan?.image as! Data, andContactInfoMail: (loan?.contactInfoMail)!, andContactInfoNumber: (loan?.contactInfoNumber)!, andChargeMode: (loan?.chargeMode)!, andChargeAmount: (loan?.chargeAmount)!, andReminder: (loan?.reminder)!, andReminderID: (loan?.reminderID)!)


        UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [(loan?.reminderID)!]) // Reminder entfernen, weil der Betrag zurück gezahlt wurde
        tableView.reloadData()
        self.loanList?.remove(at: indexPath.row) // Datensatz aus der Variable entfernen
        tableView.deleteRows(at: [indexPath], with: .fade) // Datensatz ausblenden
        tableView.endUpdates() // Update beenden
        vc?.setTotalAmount() // Gesamtwert aktualisieren
    }

все остальные ошибки исчезли, но от этой у меня дымится голова.


person Sjero Markus    schedule 04.11.2017    source источник
comment
Не имеет отношения к проблеме, но не вызывайте reloadData и delete/insertRows последовательно. deleteRows обновляет представление таблицы с анимацией, поэтому reloadData является избыточным. Удалите строку. Удалите также строки beginUpdates() / endUpdates(). Они тоже не нужны. И рассмотрите возможность объявить loan необязательным. Огромное количество вопросительных и восклицательных знаков раздражает.   -  person vadian    schedule 04.11.2017
comment
Здравствуйте, vadian, попробовал ваши предложения, но это привело к краху моего приложения - кажется, им нужно обновить таблицу и обновить представление - с этими строками все работает, без одной строки приложение вылетает! но все равно спасибо! ответ от luk2302 сработал как шарм :)   -  person Sjero Markus    schedule 04.11.2017


Ответы (1)


Предполагая, что все типы внутри кредита соответствуют ожидаемым типам, должно работать следующее:

if let loan = loan {
    self.appDelegate.loanResource.editLoan(withObjID: loan.objectID, andName: loan.name, andAmount: loan.amount, andNote: loan.note, andCreated: loan.created, andDue: loan.due, andDone: nowDone, andImage: loan.image, andContactInfoMail: loan.contactInfoMail, andContactInfoNumber: loan.contactInfoNumber, andChargeMode: loan.chargeMode, andChargeAmount: loan.chargeAmount, andReminder: loan.reminder, andReminderID: loan.reminderID)
    // more to to with the unwrapped loan
} else {
    // loan was nil
}
person luk2302    schedule 04.11.2017