2014-07-23 1 views
0

me pose un problème attribuant le délégué pour un objet qui est une instance d'une classe qui définit un protocole à Swift comme suit:erreur du compilateur lors de l'attribution du délégué à un protocole à Swift iOS

I simplifié le code pour les os nus pour exemplifier la question: Ce est la classe avec le protocole

protocol TheProtocol { 
    func notifyDelegate() 
} 
class ClassWithProtocol: NSObject { 
    var delegate: TheProtocol? 
    fire() { 
     delegate?.notifyDelegate() 
    } 
} 

Ceci est la classe les conforme au protocole

class ClassConformingToProtocol: NSObject, TheProtocol { 
     var object: ClassWithProtocol? 
     func notifyDelegate() { 
      println("OK") 
     } 
     init() { 
      object = ClassWithProtocol() 
      object?.delegate = self // Compiler error - Cannot assign to the result of this expression 
      object?.fire() 
     } 
    } 

J'ai essayé toutes sortes d'alternatives pour assigner le délégué sans succès. Une idée de ce qui me manque?

Répondre

2

La section Problèmes connus des Notes de version dit:

Vous ne pouvez pas affecter certaines conditions à une propriété d'un objet en option. (16922562)

Par exemple, ce n'est pas pris en charge:

let window: NSWindow? = NSApplication.sharedApplication.mainWindow 
window?.title = "Currently experiencing problems" 

Alors vous devriez faire quelque chose comme if let realObject = object { ... }

+0

Impressionnant .... Il a travaillé ...... – eharo2

Questions connexes