2011-07-14 30 views
0

我有兩個類:通JSON輸出到其他類 - iPhone

dbConnector - 連接到數據庫和檢索數據 視圖 - 控制 - 實例dbConnector和調用數據檢索功能

我面對越來越dbConnector問題將數據傳遞到ViewController:

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奧勒類:

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

我想什麼是分配從dbConnector的NSDictionary的*問題,這些問題在我viewcontroller.m

我怎樣才能得到dbConnector返回的JSON字符串傳遞給指針合成我視圖控制器viewDidLoad方法?

回答

0

您可以實現和委託dbConnector類的協議,並使dbQuestionGetterViewController成爲dbConnector實例的委託。

編輯:

Delegation

Protocol

編輯2:

在dbConnector.h導入前添加

@protocol dbConnectorDelegate 

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

@end 

在dbConnector.h在@interface添加:

id<dbConnectorDelegate> delegate; 

,並宣佈爲代表

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

一個新的屬性在你dbConnector.m文件合成委託屬性:

@synthesize delegate; 

而且在requestFinished添加

[delegate didFinishDownloadData: responseData]; 

通過這個,你告訴你的代表那個用數據參數完成下載。

在你dbQuestionGetterViewController.h導入dbConnector.h,並告訴給dbQuestionGetterViewController將實現dbConnectorDelegate:

@interface dbQuestionGetterViewController : UIViewController<dbConnectorDelegate> 

而在你dbQuestionGetterViewController.m添加

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

而且你的觀點做負載附加物:

db.delegate = self; 
+0

對不起,我沒有站?這個怎麼用? – David

+0

看看編輯鏈接 –

+0

好吧,這是我想要的,但我怎麼能實現呢? – David