2015-05-27 46 views
8

ho definito un NS_ENUM di seguito in un altro file:riferimento al enum è ambiguo Objective-C

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

Quando provo a fare un caso interruttore:

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

sto ottenendo un errore di generazione: Reference to LinkPlatformTypeGoogle is ambiguous. Reference to LinkPlatformTypeFacebook is ambiguous.

Aggiornamenti:

Il defines.h di file che ho definito l'enum è per esempio Obiettivo 1, e c'è una classe StoreClass che importare questo file defines.h. E l'iscrizione al target StoreClass.m che ho impostato come target multipli: Target 1 e Target 2. Quindi, dopo averlo fatto, è apparso lo Reference to LinkPlatformTypeFacebook is ambiguous. Sarà questa la ragione?

+1

Avete provato con una denominazione diversa per l'enum? La mia ipotesi migliore è che potrebbe essere solo un conflitto di denominazione e il compilatore non sa cosa fare riferimento. – Vlad

+1

Ho provato lo stesso codice del tuo con un nuovo progetto..non ricevo alcun errore in quanto tale, solo per verificare di aver importato il file? e sì ho messo NS_ENUM nel file define.h che è il file di intestazione. –

+0

@Vlad Ho controllato due volte. Non c'è conflitto di denominazione. Ne ho solo definito uno nel mio progetto. –

risposta

6

Cambiare l'importazione da

#import "SwipeView.h" 

a

@import SwipeView; 

ha lavorato per me

+0

La mia classe era in un modulo (sottoprogetto), quindi ho provato a importare @import MainModule.Folder dove il mio punto di vista vive invece dell'implementazione .h e ha funzionato, grazie! –

+0

Funziona per me con FBSDKLoginManager in FBSDKCoreKit 4.28.0 –

Problemi correlati