2011-07-14 18 views
0

私は2つのクラスがあります。パスJSON出力 - iPhone

dbConnectorは - データベースに接続し、データに のViewControllerを取得 - dbConnectorをインスタンス化して呼び出すデータ検索機能

私はdbConnectorを取得している直面しています問題

dbConnectorClass:

#import "dbConnector.h" 
#import "ASIFormDataRequest.h" 
#import "JSONKit.h"; 

@implementation dbConnector 
@synthesize data; 

//method to 
-(void)getQuestions:(NSString*)sectionId from:(NSString*)url{ 
    NSURL *link = [NSURL URLWithString:url]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:link]; 
    [request setPostValue:sectionId forKey:@"section"]; 
    [request setDelegate:self]; 
    [request setDidFinishSelector:@selector(requestFinished:)]; 
    [request startAsynchronous];  
} 

- (void)requestFinished:(ASIHTTPRequest *)request 
{ 
    NSData *responseData = [request responseData]; 
    NSString *json = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
    NSDictionary *questions = [json objectFromJSONString]; 
    NSLog(@"%@", questions); 
    //need to pass questions to view controller...how?? 
    [json release]; 
} 

@end 

viewcontrのViewControllerにデータを渡しますollerクラス:

#import "dbQuestionGetterViewController.h" 
#import "dbConnector.h"; 

@implementation dbQuestionGetterViewController 
@synthesize questions, db; 

-(void)viewDidLoad{ 
    db = [[dbConnector alloc]init]; 
    //code to initialise view 
    [db getQuestions:@"2" from:@"http://dev.speechlink.co.uk/David/get_questions.php"]; 
    //self.questions = arr; 
    [super viewDidLoad]; 
} 

私が望む何をNSDictionaryのを割り当てることです*質問へのdbConnectorからの質問は、私はdbConnectorが私に戻ってJSON文字列を渡すために取得することができますどのように私のviewcontroller.m

で合成・ポインターView Controller viewDidLoadメソッド?

答えて

0

dbConnectorクラスのプロトコルを実装して委譲し、dbConnectorインスタンスのデリゲートをdbQuestionGetterViewControllerにすることができます。

編集:

Delegation

Protocol

編集2:

dbConnector.hで@interfaceアドにdbConnector.hでは、インポートする前に

@protocol dbConnectorDelegate 

-(void)didFinishDownloadData:(NSData*)data; 

@end 

を追加します。

id<dbConnectorDelegate> delegate; 

そして、あなたのdbConnector.mファイルでは、デリゲート

@property (nonatomic, assign) id<dbConnectorDelegate> delegate; 

のための新しいプロパティを宣言するには、デリゲートのプロパティを合成:

@synthesize delegate; 

そしてrequestFinishedで

[delegate didFinishDownloadData: responseData]; 

を追加これにより、あなたはあなたの代表者にデータパラメータを使用してダウンロードを完了しました。あなたのdbQuestionGetterViewController.hで

dbConnector.hをインポートし、dbConnectorDelegate実施することdbQuestionGetterViewControllerに伝える:

- (void)didFinishDownloadData:(NSData*)data{ 
     NSString *json = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; 
     NSDictionary *questions = [json objectFromJSONString]; 
     NSLog(@"%@", questions); 
     //need to pass questions to view controller...how?? 
     [json release]; 
    } 

を追加し、ビューがロード・追加をしました

@interface dbQuestionGetterViewController : UIViewController<dbConnectorDelegate> 

そして、あなたのdbQuestionGetterViewController.mでは:

db.delegate = self; 
+0

申し訳ありませんスタンド?これはどのように作動しますか? – David

+0

編集リンクを見てください –

+0

私が欲しいものですが、これをどのように実装できますか? – David