2014-02-13 9 views
1

세 가지 옵션으로 분할 컨트롤이 있습니다. selected.segmentedIndex에서 변수를 만드는 방법을 알지 못했기 때문에 다른 곳에서 메서드를 복사했습니다.int 대신 enum 문자열

Implicit conversion of 'tipoServidor' (aka 'enum tipoServidor') to 'NSString *' is disallowed with ARC

어떻게이 일을 할 수있는 올바른 방법은 다음과 같습니다

typedef NS_ENUM(int, tipoServidor) { 
SERVIDOR_ARG = 1, 
SERVIDOR_EU = 2, 
SERVIDOR_US = 3}; 
@property (nonatomic) tipoServidor servidorType; 

<Another file> 
if (self.persistentSettings.servidorType == SERVIDOR_ARG){ 
    self.servidorControl.selectedSegmentIndex= 0; 
} else if (self.persistentSettings.servidorType == SERVIDOR_EU) { 
    self.servidorControl.selectedSegmentIndex= 1; 
} else if (self.persistentSettings.servidorType == SERVIDOR_US) { 
    self.servidorControl.selectedSegmentIndex = 2;} 

<Another file> 
- (NSString *)servidorType { 
AdSettings *settings = [[AdSettings alloc] init]; 

NSString *server = [settings servidorType]; 

문제는 마지막 줄이 오류가 발생한다는 것입니다?

당신에게

답변

2

The problem is that the last line throws this error: Implicit conversion of tipoServidor (aka enum tipoServidor) to NSString * is disallowed with ARC

ARC 여부는, enumNSString없는 대단히 감사합니다, 그래서 당신은 그것을 할 수 없습니다. 이 같은 예를 들어, 매핑을하는 작은 함수를, 그것으로 거래하거나 당신의 enum 값을 나타내는 문자열 배열을 정의하거나 쓰기 위해 :

NSString *DescriptionOfServidor(tipoServidor e) { 
    switch (e) { 
     case SERVIDOR_ARG: return @"SERVIDOR_ARG"; 
     case SERVIDOR_EU: return @"SERVIDOR_EU"; 
     case SERVIDOR_US: return @"SERVIDOR_US"; 
    } 
    return nil; 
} 

당신이 지금 필요로하는 것은이 호출은 다음과 같습니다

NSString *server = DescriptionOfServidor([settings servidorType]); 
+0

대단히 감사합니다. 그 함수를 어디에 둘 것인지 생각하려고하는 Im DescriptionOfServidor ... 마지막 힌트? haha – user3294339

+0

@ user3294339 사용하려는 위치에 따라 다릅니다. 만약 하나의 .m 파일에 국한되어 있다면, 거기에있는 어떤 클래스의'@ implementation' 섹션 위에 파일을 넣고'NSString' 앞에'static'을 추가하십시오. 여러 .m 파일간에 공유하기를 원한다면 원하는 .m 클래스에 넣고'enum'이 선언 된 헤더에 forward 선언을 추가하십시오. 전달 선언은 다음과 같습니다 :'NSString * DescriptionOfServidor (tipoServidor e); ' – dasblinkenlight

+0

@user3294339 이것을 시도하십시오. 문제가 해결되지 않으면 옆에있는 체크 표시를 클릭하여 답을 수락하십시오. – dasblinkenlight