2013-05-12 2 views
1

TWTweetComposeViewControllerResult 또는 SLComposeViewControllerResult 중 하나 인 메서드에서 결과가 나타납니다.어떤 유형을 사용해야합니까?

이 방법으로 전달해야합니다. 예 :

[self doSomething:result]; 

이 방법을 어떻게 선언합니까?

- (void) doSomething:(SLComposeViewControllerResult) result ? 

- (void) doSomething:(TWTweetComposeViewControllerResult) result ? 

- (void) doSomething:(NSNumber *) result ? 

답변

4

두 가지 다른 방법으로 각각을 처리하십시오. 각 열거 형은 다른 유형이므로 처리해야합니다. 성공을 표시하는 경우 부울을 사용하여 결과를 전달하거나, 추가 정보가 필요한 경우 사용자 정의 열거 형을 전달할 수 있습니다. 당신은 아직도 당신이 유형의 균일 한 방식으로 처리하고 무시할지 확신이 있다면

- (void)doSomethingSL:(SLComposeViewControllerResult) result 
{ 
    // made up, idk what the result enum would be be 
    [self doSomething:(result == SLComposeSuccess)]; 
} 

- (void)doSomethingTweet:(TWTweetComposeViewControllerResult) result 
{ 
    // made up, idk what the result enum would be be 
    [self doSomething:(result == TWTweetSuccess)]; 
} 

- (void)doSomething:(BOOL)success 
{ 
} 

, 당신은 항상 방법에서 int로 결과를 캐스팅을에 전달할 수 있습니다.

1

SLComposeViewControllerResult와 TWTweetComposeViewControllerResult는 둘 다 enum이며, 0은 취소됨을 의미하고 1은 의미를 나타냅니다.

그래서 이들의 확인을해야한다 :

- (void) doSomething:(SLComposeViewControllerResult) result; 
- (void) doSomething:(TWTweetComposeViewControllerResult) result; 
- (void) doSomething:(NSInteger) result; 

[편집] TWTweetComposeViewController.h에서이 의견을 참고 :

// This class has been deprecated in iOS 6. Please use SLComposeViewController (in the Social framework) instead. 

그래서 그냥 SLComposeViewControllerResult 버전을 사용해야합니다.

+0

특히 프로토콜이 관련되어있는 경우 경고없이 알 수 있습니다. –

+0

아니요, 어떤 경고도 표시되지 않습니다. –

+0

감사합니다. 숫자가 같을 수 있다고 생각했지만 어떻게 NSIntegers인지 알았습니까? 어쨌든 나는이 애플 리케이션에서 iOS 5를 지원해야한다. 이것이 TWTweetComposeViewController를 사용하는 이유이다. – SpaceDog

관련 문제