2015-05-18 20 views
6

Mam bardzo frustrujący problem z budową mojego nowego projektu. Próbuję zintegrować pakiet SDK Facebooka iOS, ale z jakiegoś powodu otrzymuję dziwne błędy. Podczas próby użycia FBSDKLoginKit do wyświetlania FBSDKLoginButton w widoku storyboard.Nieznana klasa FBSDKLoginButton w pliku konstruktora interfejsu

Pierwszą wskazówką coś jest nie tak to jest „błąd”, gdy próbuję #import <FBSDKLoginKit/FBSDKLoginKit.h> (jednak wydaje się tylko jako błąd w edytorze, to nadal kompiluje w porządku):

„Nie można zbudować moduł FBSDKLoginKit”.

O dziwo, ten "błąd" zniknął po błądzeniu z niektórymi ustawieniami kompilacji związanymi z modułem, nawet gdy przywróciłem ich pierwotne wartości.

Co ciekawe, jeśli wyraźnie odwołuję się do klasy FBSDKLoginButton z mojego kontrolera widoku (na przykład programowo dodaję przycisk), tworzenie instancji opartych na scenorysach działa dobrze. Zgaduję więc, że to musi być jakiś linker lub coś takiego, ale na pewno nie jestem profesjonalistą w tych sprawach.

Żadna z dokumentacji pakietu SDK na Facebooku nie wspomina o tym problemie, który mogę znaleźć, co jest dziwne, ponieważ tak jak powiedziałem, jest to zupełnie nowy czysty projekt.

Odpowiedz

12

Mój zły, the documentation does mention this, i sugeruje rozwiązanie go tak, jak już się zorientowałem, odwołując się do klasy FBSDKLoginButton w application didFinishLaunchingWithOptions:. (Szczerze mówiąc to nie ma znaczenia, gdzie można odwołać, więc wszędzie tam, gdzie czuje się najbardziej komfortowo. Dla mnie, kontroler widok większy sens.)

- (BOOL)application:(UIApplication *)application 
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    [FBSDKLoginButton class]; 
    ... 
    return YES; 
} 
+0

Sądzę, że możesz w tej sytuacji odpowiedzieć, aby wskazać innym. –

+0

Jak dodać to w Swift? – Saty

+0

@Saty: Po prostu wywołaj FBSDKLoginButton() -> wyświetli ostrzeżenie ("Wynik inicjalizatora nie jest używany"), ale działa! – krn

1

do szybkiego użycia FBSDKLoginButton.superclass()

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { 
    // Override point for customization after application launch. 

    FBSDKLoginButton.superclass() 

    return true 
} 
Powiązane problemy