“无法识别的选择器”错误。无法弄清楚
过去几天我一直试图让Twitter的OAuth工作在我的iPhone应用程序上,而且我不能为我的生活弄清楚为什么我得到这个错误。我已经改变了一段时间以来的方式,但仍然一无所获。所以我转而希望弄清楚。“无法识别的选择器”错误。无法弄清楚
本教程是linked here。下载应用程序并运行它非常有效。它不适合我。
这是我得到的错误 -
2010-07-25 20:04:52.224 AppTest[4620:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[OAToken setVerifier:]: unrecognized selector sent to instance 0x6c2acc0'
谁能告诉我什么,我做错了什么?我使用几乎相同的代码。
编辑:下面的代码,我使用setVerifier:
- (IBAction)finishSetup:(id)sender {
NSString *thePin = [[NSString alloc] initWithString:pinText.text];
NSLog(@"%@", thePin);
if([thePin length] == 7 && [[NSScanner scannerWithString:thePin] scanInt:NULL]) {
loadingView.hidden = NO;
[pinText resignFirstResponder];
OAConsumer *consumer = [[OAConsumer alloc] initWithKey:consumer_key secret:consumer_secret];
OADataFetcher *fetcher = [[OADataFetcher alloc] init];
NSURL *url = [NSURL URLWithString:@"https://api.twitter.com/oauth/access_token"];
[accessToken setVerifier:pinText.text];
NSLog(@"Using PIN %@", accessToken.verifier);
OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url consumer:consumer token:accessToken realm:nil signatureProvider:nil];
[request setHTTPMethod:@"POST"];
NSLog(@"Getting access token...");
[fetcher fetchDataWithRequest:request delegate:self didFinishSelector:@selector(accessTokenTicket:didFinishWithData:) didFailSelector:@selector(accessTokenTicket:didFailWithError:)];
} else {
loadingView.hidden = YES;
error_alert = [[UIAlertView alloc] initWithTitle:@"TestApp" message:@"The PIN you have entered is invalid. Please try again." delegate:self cancelButtonTitle:@"Cancel Login" otherButtonTitles:@"Try again", nil];
[error_alert show];
[error_alert release];
}
[thePin release];
}
如果这样做,新的XCode 4是惊人的。我在链接的教程中下载了ZIP文件,看起来好像OAMutableURLRequest.m在整个文件中都有错误,认为NSString响应URLEncodedString。
尝试更新URLEncodedString到
stringByAddingPercentEscapesUsingEncoding:NSASCIIStringEncoding
让我知道你的作品!
默认情况下,所有XCode4都会打开静态分析。您可以通过执行“构建和分析”来获取旧XCode中的相同信息 – 2010-07-26 01:48:10
尝试
[accessToken setVerifier:thePin];
我认为BarrettJ有它。 setVerifier参数需要一个NSString。由于您提供了其他内容,因此它会查找与签名匹配的不同setVerifier,并且找不到它。这将导致“无法识别的选择器”错误。
的accessToken setVerifier:期待一个NSString *
thePin和pinText.text都的NSString *
真的需要出示你实例中的accessToken变量。
我是从这里链接的帖子的作者。
您收到此错误的原因是因为您使用的OAuthConsumer版本错误。有几个版本可用,其中大多数版本都没有OAToken中的“验证器”字段,并且会返回如果您尝试使用它的错误。我的帖子中的示例项目包含正确的OAuthVerifier版本,这就是它工作的原因。
我使用仅包含OAuthConsumer的ZIP文件更新了我的帖子。你可以在你的项目中使用它,它会工作。当然,您也可以只复制示例项目中的OAuthConsumer文件并在您的文件中使用,它也可以工作。
我相信另一种选择是进行如下调用:[请求setOAuthParameterName:@“oauth_verifier”withValue:oauthVerifierString] – 2012-02-10 11:18:20
在建添加-all_load
标志设置
https://developer.apple.com/library/mac/#qa/qa2006/qa1490.html
-all_load
强制链接从每一个存档看到,即使是那些没有Objective-C代码加载所有的目标文件。 -force_load
可在Xcode 3.2及以后。它允许更精细的谷物控制归档加载。每个-force_load
选项后面都必须有一个到存档的路径,并且该存档中的每个目标文件都将被加载。
“几乎使用相同的代码”与“使用相同的代码”不一样。如果不同,请将其发布在您的问题中。 – 2010-07-26 00:23:19
这是相同的代码,我的道歉。唯一的区别是该教程不适用于iPhone,而是使用Objective-C和Cocoa。 – 2010-07-26 00:31:51
您应该在您使用' - [OAToken setVerifier:]' – kubi 2010-07-26 00:35:24