2015-05-27 13 views
8

ja zdefiniował NS_ENUM poniżej w innym pliku:odniesienia do wyliczenia jest niejednoznaczna objective-c

typedef NS_ENUM (NSUInteger, LinkPlatformType){ 
    LinkPlatformTypeEmail = 1, 
    LinkPlatformTypeFacebook, 
    LinkPlatformTypeGoogle 
}; 

Kiedy próbuję zrobić obudowę przełącznika:

- (void)linkWithType:(LinkPlatformType)linkType { 
    switch (linkType) { 
     case LinkPlatformTypeGoogle: 
      break; 
     case LinkPlatformTypeFacebook: 
      break; 
     default: 
      break; 
    } 
} 

Otrzymuję błąd kompilacji: Reference to LinkPlatformTypeGoogle is ambiguous. Reference to LinkPlatformTypeFacebook is ambiguous.

Aktualizacje:

Plik defines.h które zdefiniowane enum jest na przykład w Celu 1, a istnieje klasa StoreClass który importować ten plik defines.h. I docelowe członostwo StoreClass.m ustawiłem jako wiele celów: cel 1 i cel 2. Po tym, pojawił się Reference to LinkPlatformTypeFacebook is ambiguous. Czy to będzie powód?

+1

Próbowałeś z innym nazewnictwa dla wyliczenia? Domyślam się, że może to być tylko konflikt nazw, a kompilator nie wie, do czego się odwołać. – Vlad

+1

Próbowałem tego samego kodu, co twój, z nowym projektem. Nie dostaję żadnego błędu jako takiego, tylko po to, aby zweryfikować czy importujesz plik? i tak umieszczam plik NS_ENUM w pliku define.h, który jest plikiem nagłówkowym. –

+0

@Vlad Sprawdziłem dwa razy. Nie ma konfliktu nazw. Zdefiniowałem tylko jeden w moim projekcie. –

Odpowiedz

6

Zmiana import z

#import "SwipeView.h" 

do

@import SwipeView; 

pracował dla mnie

+0

Moja klasa była w module (podprojekt), więc próbowałem zaimportować @import MainModule.Folder gdzie mój widok żyje zamiast implementacji .h i zadziałało, dziękuję! –

+0

Działa na mnie z FBSDKLoginManager w FBSDKCoreKit 4.28.0 –