2015-09-24 5 views
5

Mam protokół w SWIFT:Brak typu lub protokół o nazwie 'ReformerProtocol' w .h, ale .m działa dobrze

import Foundation 

@objc protocol ReformerProtocol { 
    func reformDataWithManager(apiManager: FSAPIClient) -> NSDictionary 
} 

W moim Objective C .m gdybym definiować metody takie jak:

- (NSDictionary *)fetchDataWithReformer:(id<ReformerProtocol>)reformer { 
} 

to działa dobrze, ale jeśli zadeklarować tę metodę w pliku .h:

- (NSDictionary *)fetchDataWithReformer:(id<ReformerProtocol>)reformer; 

błąd jest:

No type or protocol named 'ReformerProtocol' 

Nie jestem pewien powodu.

+0

Czy zaimportowałeś nagłówek '-Swift'? – jtbandes

+0

tak, myślę, że to dlatego w pliku .m działa. –

Odpowiedz

20

Powinieneś po prostu przekazać dalej - deklaruj protokół w pliku .h, zanim go użyjesz.

@protocol ReformerProtocol; 
+0

Dzięki, szkoda, próbowałem '' '@ klasy'''. Nie wiesz, dlaczego działa poprawnie w pliku .m –

+0

Ponieważ zaimportowałeś nagłówek. – jtbandes

+1

Dodaję to do pliku .pch: #import "Probject-Swift.h" to nie pozwoli na to, że istnieje protokół .h file. –

Powiązane problemy