2014-11-05 15 views
5

Mam ten protokół w obiektywnej Klasa C:Wdrożenie protokołu C obiektywny Swift

@protocol YTManagerDelegate <NSObject> 
@required 
- (void)uploadProgressPercentage:(int)percentage; 
@end 
... 

i szybkiego klasę podłączony do niego:

class YTShare: UIViewController, YTManagerDelegate{ 

    func uploadProgressPercentage(percentage:Int?){ 
     println(percentage) 
    } 
    ... 

otrzymuję błąd: typ YTShare robi niezgodny z protokołem YTShareDelegate, prawdopodobnie napisałem niepoprawnie funkcję swift, więc klasa obj jej nie znajduje. Jak mogę napisać to poprawnie?

Odpowiedz

5

Istnieją dwa błędy w sposobie delegata

func uploadProgressPercentage(percentage:Int?){ 
    println(percentage) 
} 

Ten parametr nie musi być opcjonalne, a sposób typu C int jest mapowany Swift jak CInt (alias Int32)

func uploadProgressPercentage(percentage:CInt){ 
    println(percentage) 
} 

Alternatywnie można użyć NSInteger w protokole Objective-C, który jest zamapowany na Int w Swift. Będzie to 32-bitowa lub 64-bitowa liczba całkowita, w zależności od architektury , podczas gdy int/CInt jest zawsze 32-bitowa.

Powiązane problemy