iphone app: delegate not responding

Posted by Fiona on Stack Overflow See other posts from Stack Overflow or by Fiona
Published on 2010-05-13T15:09:37Z Indexed on 2010/05/13 15:14 UTC
Read the original article Hit count: 280

Filed under:
|

Hi guys..

So i'm very new to this iphone development stuff.... and i'm stuck.

I'm building an app that connects to the twitter api. However when the connectionDidFinishLoading method gets called, it doesn't seem to recognise the delegate.

Here's the source code of the request class:

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];

}

Here's the .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

In the method: connectionDidFinishLoading, the following never gets executed: [delegate performSelector:[self callback] withObject:receivedData];

Instead I get the message: "No response from delegate"

Anyone see what I'm doing wrong?! or what might be causing the problem?

Regards, Fiona

© Stack Overflow or respective owner

Related posts about delegate

Related posts about iphone