0

방법을 인식 할 수 있더라도 : main.m, CGOAuth.h, CGOAuth.m이 (https://github.com/guicocoa/cocoa-oauth에서 촬영) 나 전화 main.m에서없음 클래스 메소드없는 선택을위한 ... 엑스 코드는 내가 3 개 개의 파일이

을 (에에게 주요 방법) :

[GCOAuth URLRequestForPath:@"websites" 
    HTTPMethod:@"GET" 
    parameters:nil scheme:@"https" 
    host:@"blah"   
    consumerKey:CONSUMER_KEY 
    consumerSecret:CONSUMER_SECRET 
    accessToken:accessToken 
    tokenSecret:tokenSecret]; 

내가 얻는 오류는 선택기 URLRequestforPath에 대한 클래스 메소드가 없다는 것입니다. 내가 main.m로 가져 GCOAuth.h,에서

는 선언입니다 :

+ (NSURLRequest *)URLRequestForPath:(NSString *)path 
        HTTPMethod:(NSString *)HTTPMethod 
        parameters:(NSDictionary *)parameters 
         scheme:(NSString *)scheme 
          host:(NSString *)host 
        consumerKey:(NSString *)consumerKey 
       consumerSecret:(NSString *)consumerSecret 
        accessToken:(NSString *)accessToken 
        tokenSecret:(NSString *)tokenSecret; 

그리고 구현 GCOAuth.m입니다. 나는이 일을 해봤

:

[[GCOAuth alloc] URLRequestForPath:@"websites" 
    HTTPMethod:@"GET" 
    parameters:nil scheme:@"https" 
    host:@"blah"   
    consumerKey:CONSUMER_KEY 
    consumerSecret:CONSUMER_SECRET 
    accessToken:accessToken 
    tokenSecret:tokenSecret]; 

하지만 난 그냥 오류 : 눈에 보이는 @interface는 선택 URLRequestForPath를 선언하지 ....

내가 뭘 잘못하고 있는지 알 수 없습니다. 셀렉터에 대한 클래스 메소드가 없다면, Xcode의 자동 완성 기능이 내가 사용할 수있는 메소드를 제공하는 이유는 무엇입니까?

+ (NSURLRequest *)URLRequestForPath:(NSString *)path 
        HTTPMethod:(NSString *)HTTPMethod 
        parameters:(NSDictionary *)parameters 
         scheme:(NSString *)scheme 
          host:(NSString *)host 
        consumerKey:(NSString *)consumerKey 
       consumerSecret:(NSString *)consumerSecret 
        accessToken:(NSString *)accessToken 
        tokenSecret:(NSString *)tokenSecret { 
// check parameters 
if (host == nil || path == nil) { return nil; } 

// create object 
GCOAuth *oauth = [[GCOAuth alloc] initWithConsumerKey:consumerKey 
             consumerSecret:consumerSecret 
              accessToken:accessToken 
              tokenSecret:tokenSecret]; 
oauth.HTTPMethod = HTTPMethod; 
oauth.requestParameters = parameters; 

NSString *encodedPath = [path stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
NSString *URLString = [NSString stringWithFormat:@"%@://%@%@", scheme, host, encodedPath]; 
if ([[HTTPMethod uppercaseString] isEqualToString:@"GET"]) { 
    // Handle GET 
    if ([oauth.requestParameters count]) { 
     NSString *query = [GCOAuth queryStringFromParameters:oauth.requestParameters]; 
     URLString = [NSString stringWithFormat:@"%@?%@", URLString, query]; 
    } 
} 
oauth.URL = [NSURL URLWithString:URLString]; 

NSMutableURLRequest *request = [oauth request]; 
if (![[HTTPMethod uppercaseString] isEqualToString:@"GET"] && [oauth.requestParameters count]) { 
    // Add the parameters to the request body for non GET requests 
    NSString *query = [GCOAuth queryStringFromParameters:oauth.requestParameters]; 
    NSData *data = [query dataUsingEncoding:NSUTF8StringEncoding]; 
    NSString *length = [NSString stringWithFormat:@"%lu", (unsigned long)[data length]]; 
    [request setHTTPBody:data]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
    [request setValue:length forHTTPHeaderField:@"Content-Length"]; 
} 

// return 
return request; 

} 여기

내가 시도한 몇 가지 더 있지만, 엑스 코드를 다시 시작하고을하고, 일을하지 않은 :

편집은 (여기 CGOAuth.m에서 구현 한 것입니다) 깨끗한.

(a) 코드 완성은 나에게 앞에서 언급 한 메소드의 이름을 제공하고 (b) 사이드 바 (왼쪽)의 계층 적보기에 나타나기 때문에 Xcode가 메소드를 인식한다는 것을 알고있다. 시간은 본질입니다!

+0

아마도 오타가있을 수 있습니까? xcode 편집기에 다시 써보십시오. –

+0

여는 괄호까지 메서드 구현을 표시 할 수 있습니까? – Chuck

+0

@Chuck 여는 괄호까지 무슨 뜻입니까? – user678392

답변

0

메인 클래스에 CGOAuth.h을 가져 왔습니까? CGOAuth 클래스가 프로젝트 빌드 단계에 있는지 확인하십시오.

+0

예, 처음입니다. CGO.m은 빌드 단계 섹션의 컴파일 소스에 있습니다. – user678392