방법을 인식 할 수 있더라도 : 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가 메소드를 인식한다는 것을 알고있다. 시간은 본질입니다!
아마도 오타가있을 수 있습니까? xcode 편집기에 다시 써보십시오. –
여는 괄호까지 메서드 구현을 표시 할 수 있습니까? – Chuck
@Chuck 여는 괄호까지 무슨 뜻입니까? – user678392