Ok ecco il grosso problema. Ho avuto una biblioteca scritta in ObjC (this). Lì avevamo un protocollo definito. Quando ho provato ad usarlo in file di rapida ottengo sempre:Protocollo ObjC Implementazione in Swift
tipo "XXX" non è conforme al protocollo "XXX"
Per semplificare le cose che ho fatto un progetto di test - dovrebbe essere creato come progetto Swift.
Poi creare file di intestazione objC (ho chiamato StupidProtocol.h) con seguente protocollo interno (si prega di notare ogni nome e il valore in modo che corrisponda esattamente la data compresi maiuscole/minuscole):
@protocol MyProtocol <NSObject>
- (NSString *)getAxisLabel:(id)axis Value:(CGFloat)value;
@end
a colmare intestazione:
#import "StupidProtocol.h"
E poi di nuovo nel file di Swift:
class ViewController: UIViewController, MyProtocol
{
func getAxisLabel(axis: AnyObject!, value: CGFloat) -> String! {
return ""
}
}
E baam abbiamo ancora questo errore, anche se il completamento automatico termina per me la funzione getAxisLabel.
Ho il forte sospetto che il problema sia con l'argomento "valore" e il suo parametro di funzione "Valore".
Qualsiasi aiuto sarà molto apprezzato.
EDIT
prega di notare che this library non è tecnicamente il mio, quindi non posso cambiarlo. Ho bisogno di un modo per usarlo in Swift senza cambiare la sua dichiarazione originale. Il mio esempio è solo per semplificare il mio problema.
quello che ho cercato
Ho provato seguenti scenari senza successo:
'ha il nome argomenti diversi da quelli previsti dal protocollo n' errore
func getAxisLabel(axis: AnyObject!, Value value: CGFloat) -> String! {
return ""
}
'ha nome diverso argomenti da quelli richiesto dall'errore del protocollo
func getAxisLabel(axis: AnyObject!, Value: CGFloat) -> String! {
return ""
}
'ty pe non è conforme al protocollo'
func getAxisLabel(axis: AnyObject!, Value: CGFloat) -> NSString! {
return ""
}
SOLUZIONE
Vedi accepted answer
Obj c è maiuscola V e veloce è minuscola v Verificare entrambi in minuscolo.. Dovrebbe essere in minuscolo in entrambi. – Fogmeister
provare a scrivere il metodo rapido con il nome param esterno "Valore" e il nome param interno di "valore" come: "Valore valore: CGFloat" – hola
Ciò potrebbe risolvere il problema ma non si dovrebbe avere la V maiuscola in primo luogo. Rilascia e funzionerà. – Fogmeister