2016-06-20 16 views
0

Ich versuche, die CKRecord Klasse zu erweitern, um Subskribierung zu ermöglichen. Dazu habe ich eine neue Datei erstellt, die so genannte CKRecordHelper und getan:Überladungsmethode in Swift gibt Objective C-Fehler

extension CKRecord { 
    subscript(key: String) -> AnyObject! { 
     get { 
      return self.objectForKey(key) 
     } 
     set(newValue) { 
      self.setObject(newValue as? CKRecordValue, forKey: key) 
     } 
    } 
} 

Allerdings bin ich auf den get und set Linien einen Fehler erhalten, der wie folgt lautet:

Subscript Beim Objective-C-Selektor kommt 'objectoForKeyedSubscript:' mit der Methode 'objectForKeyedSubscript' mit demselben Objective-C-Selektor in Konflikt.

Wie kann ich das beheben? Soweit ich weiß, erlaubt Objective-C keine Überladung von Methoden, aber ich verwende Swift. Letztendlich möchte ich nur zulassen, dass eine CKRecord Subskribierung erlaubt.

+0

Von meinen Tests in Playgrounds hat CKRecord bereits abonniert – PeejWeej

Antwort

1

Verwenden Sie das Attribut @nonobjc, um die Methode vor der ObjC-Laufzeit zu verbergen, damit sich der Swift-Compiler keine Sorgen über die Kompatibilität mit ObjC-Code machen muss.

+0

Vielen Dank, mein Herr! Ich schätze die Hilfe. – BlackHatSamurai