Conditionnelle de Liaison: si laisser erreur Initialisation conditionnelle de liaison doit avoir en Option type
Je suis en train de supprimer une ligne de ma Source de Données et la ligne de code suivante:
if let tv = tableView {
provoque l'erreur suivante:
Initialiseur conditionnelle de liaison doit avoir en Option, non
UITableView
Voici le code complet:
//Override to support editing the table view.
func tableView(tableView: UITableView, commitEditingStyle editingStyle:UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if editingStyle == .Delete {
//Delete the row from the data source
if let tv = tableView {
myData.removeAtIndex(indexPath.row)
tv.deleteRowsAtIndexPaths([indexPath], withRowAnimation: .Fade)
Comment dois-je corriger ce qui suit?
if let tv = tableView {
- depuis
tableView
n'est pas une valeur facultative, il n'est pas nécessaire pour vérifier si il est nul ou pas. De sorte que vous pouvez l'utiliser directement, je veux dire de le supprimerif let
et il suffit d'utilisertableView
dans la fonction - Salut, Manny merci pour votre réponse.
- Pour la postérité, après j'ai résolu ce problème, j'ai couru dans
variable with getter/setter cannot have an initial value
, qui a été résolu en supprimant simplement les restes de { } bloc après l'initialisation, ala cette réponse: stackoverflow.com/a/36002958/4544328
Vous devez vous connecter pour publier un commentaire.
if let
/if var
de fixation en option ne fonctionne que lorsque le résultat de la partie droite de l'expression est une option. Si le résultat de la droite n'est pas une option, vous ne pouvez pas utiliser cette option de liaison. Le point de cette option de liaison est de vérifier pournil
et d'utiliser uniquement la variable si elle est non-nil
.Dans votre cas, le
tableView
paramètre est déclaré que la non-type facultatifUITableView
. C'est la garantie de ne jamais êtrenil
. Afin de fixation en option ici est inutile.Tout ce que nous avons à faire est de se débarrasser de la
if let
et de modifier toutes les occurrences detv
à l'intérieur justetableView
.pour mon problème que j'ai eu à remplacer
Avec
Dans le cas où vous êtes en utilisant une mesure de type cellulaire, dire ArticleCell, vous pouvez obtenir une erreur qui dit :
Vous obtiendrez cette erreur si votre ligne de code ressemble à ceci:
Vous pouvez corriger cette erreur en procédant comme suit :
Si vous cochez la case ci-dessus, vous verrez que la dernière est en option à l'aide de casting pour une cellule de type ArticleCell.
En est de même pour garde consolidés. Le même message d'erreur me conduire à ce post et la réponse (merci @nhgrif).
Le code: Imprimer le nom de la personne que si le prénom est à moins de quatre caractères.
Jusqu'à ce que j'ai déclaré dernier un paramètre optionnel, j'ai vu la même erreur.
condition de liaison doit avoir facultatif type qui signifie que vous ne pouvez lier les valeurs facultatives si l'instruction let
Cela fonctionne bien, mais assurez-vous que lorsque vous utilisez si laisser il doit avoir facultatif type "?"