所以我對這個iphone開發的東西很新....並且我被卡住了。iphone應用程序:代表沒有響應
我正在構建一個連接到twitter api的應用程序。但是,當調用connectionDidFinishLoading方法時,它似乎無法識別委託。
這裏的請求類的源代碼:
#import "OnePageRequest.h"
@implementation OnePageRequest
@synthesize username;
@synthesize password;
@synthesize receivedData;
@synthesize delegate;
@synthesize callback;
@synthesize errorCallBack;
@synthesize contactsArray;
-(void)friends_timeline:(id)requestDelegate requestSelector:(SEL)requestSelector{
//set the delegate and selector
self.delegate = requestDelegate;
self.callback = requestSelector;
//Set up the URL of the request to send to twitter!!
NSURL *url = [NSURL URLWithString:@"http://twitter.com/statuses/friends_timeline.xml"];
[self request:url];
}
-(void)request:(NSURL *) url{
theRequest = [[NSMutableURLRequest alloc] initWithURL:url];
theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];
if (theConnection){
//Create the MSMutableData that will hold the received data.
//receivedData is declared as a method instance elsewhere
receivedData=[[NSMutableData data] retain];
}else{
//errorMessage.text = @"Error connecting to twitter!!";
}
}
-(void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge{
if ([challenge previousFailureCount] == 0){
NSLog(@"username: %@ ",[self username]);
NSLog(@"password: %@ ",[self password]);
NSURLCredential *newCredential = [NSURLCredential credentialWithUser:[self username]
password:[self password]
persistence:NSURLCredentialPersistenceNone];
[[challenge sender] useCredential:newCredential forAuthenticationChallenge:challenge];
} else {
[[challenge sender] cancelAuthenticationChallenge:challenge];
NSLog(@"Invalid Username or password!");
}
}
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
[receivedData setLength:0];
}
-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
[receivedData appendData:data];
}
-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
[theConnection release];
[receivedData release];
[theRequest release];
NSLog(@"Connection failed. Error: %@ %@", [error localizedDescription], [[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
if(errorCallBack){
[delegate performSelector:errorCallBack withObject:error];
}
}
-(void)connectionDidFinishLoading:(NSURLConnection *)connection{
if (delegate && callback){
if([delegate respondsToSelector:[self callback]]){
[delegate performSelector:[self callback] withObject:receivedData];
}else{
NSLog(@"No response from delegate!");
}
}
[theConnection release];
[theRequest release];
[receivedData release];
}
這裏的.H:
@interface OnePageRequest : NSObject {
NSString *username;
NSString *password;
NSMutableData *receivedData;
NSURLRequest *theRequest;
NSURLConnection *theConnection;
id delegate;
SEL callback;
SEL errorCallBack;
NSMutableArray *contactsArray;
}
@property (nonatomic,retain) NSString *username;
@property (nonatomic,retain) NSString *password;
@property (nonatomic,retain) NSMutableData *receivedData;
@property (nonatomic,retain) id delegate;
@property (nonatomic) SEL callback;
@property (nonatomic) SEL errorCallBack;
@property (nonatomic,retain) NSMutableArray *contactsArray;
-(void)friends_timeline:(id)requestDelegate requestSelector:(SEL)requestSelector;
-(void)request:(NSURL *) url;
@end
在該方法中:connectionDidFinishLoading
,下面永遠不會被執行:
[delegate performSelector:[self callback] withObject:receivedData];
相反,我收到消息:「沒有代表的回覆」
有人看到我做錯了什麼?!或者可能導致問題的原因是什麼?
您好Fiona,請編輯您的問題以正確格式化代碼。只需選擇部分代碼並使用「代碼」按鈕自動縮進。 – ohhorob 2010-05-13 15:15:15